Pagini recente » Cod sursa (job #1647328) | Cod sursa (job #2787498) | Cod sursa (job #1479291) | Cod sursa (job #1605603) | Cod sursa (job #2766575)
#include <cstdio>
using namespace std;
int n, a[500001], b[500001];
void mergesort(int st, int dr) {
if(st<dr) {
int mj = (st+dr)/2;
mergesort(st, mj);
mergesort(mj+1, dr);
for(int i=st, i1=st, i2=mj+1;i<=dr;i++) {
if(i1<=mj && i2<=dr) {
if(a[i1]<a[i2]) b[i] = a[i1++];
else b[i] = a[i2++];
}
else if(i1>mj) b[i] = a[i2++];
else b[i] = a[i1++];
}
for(int i=st;i<=dr;i++)
a[i] = b[i];
}
}
int main()
{
freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
scanf("%d", &n);
for(int i=0;i<n;i++)
scanf("%d", &a[i]);
mergesort(0, n-1);
for(int i=0;i<n;i++)
printf("%d ", a[i]);
}