Pagini recente » Cod sursa (job #1835276) | Cod sursa (job #401528) | Cod sursa (job #1306164) | Cod sursa (job #2623917) | Cod sursa (job #248389)
Cod sursa(job #248389)
#include<stdio.h>
#define dim 500001
int n, a[dim], b[dim];
void merge_sort(int l, int r)
{
int m = (l + r) >> 1, i, j, k;
if (l == r) return;
merge_sort(l, m);
merge_sort(m + 1, r);
for ( i=l, j=m+1, k=l; i<=m || j<=r; )
if (j > r || (i <= m && a[i] < a[j]))
b[k++] = a[i++];
else
b[k++] = a[j++];
for (k = l; k <= r; k++)
a[k] = b[k];
}
int main(void)
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
scanf( "%d", &n);
for(register int i = 1; i<=n; ++i)
scanf( "%d", &a[i]);
merge_sort( 1, n);
for(register int i = 1; i<=n; ++i)
printf("%d ", a[i]);
printf("\n");
fcloseall();
return 0;
}