Pagini recente » Cod sursa (job #1294969) | Cod sursa (job #1838564) | Cod sursa (job #2534725) | Cod sursa (job #2227005) | Cod sursa (job #304008)
Cod sursa(job #304008)
#include <stdio.h>
#define dim 500100
int n, a[dim], b[dim];
void merge_sort(int l, int r)
{
int m = (l + r) / 2, 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()
{
int i;
freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
scanf("%d\n", &n);
for (i=1; i<=n; i++) scanf("%d ", &a[i]);
merge_sort(1, n);
for (i=1; i<=n; i++) printf("%d ", a[i]);
return 0;
}