Pagini recente » Cod sursa (job #453543) | Cod sursa (job #297814) | Cod sursa (job #846567) | Cod sursa (job #1828569) | Cod sursa (job #662676)
Cod sursa(job #662676)
#include<stdio.h>
#define maxn 500005
using namespace std;
long i, n, a[maxn], b[maxn];
void merge(long lo, long m, long hi)
{long i, j, k;
for(i=lo; i<=hi; i++)
b[i]=a[i];
i=lo;
j=m+1;
k=lo;
while(i<=m && j<=hi)
if(b[i]<=b[j])
a[k++]=b[i++];
else a[k++]=b[j++];
while(i<=m)
a[k++]=b[i++];
}
void mergesort(long lo, long hi)
{if(lo<hi)
{int m=lo+(hi-lo)/2;
mergesort(lo, m);
mergesort(m+1, hi);
merge(lo, m, hi);
}
}
int main()
{freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
scanf("%d", &n);
for(i=0; i<n; i++)
scanf("%d", &a[i]);
mergesort(0, n-1);
for(i=0; i<n; i++)
printf("%d ", a[i]);
return 0;
}