Pagini recente » Cod sursa (job #3268614) | Cod sursa (job #355178) | Cod sursa (job #1630649) | Cod sursa (job #1463513) | Cod sursa (job #1260220)
#include <stdio.h>
void merge(int v[], int beg, int end, int aux[])
{
if (end - beg < 2) return;
int middle = (beg + end) / 2;
merge(v, beg, middle, aux);
merge(v, middle, end, aux);
int left = beg, right = middle;
int i;
for (i = beg; i < end; i++) {
if (left < middle && (right >= end || v[left] <= v[right])) {
aux[i] = v[left];
left++;
} else {
aux[i] = v[right];
right++;
}
}
for (i = beg; i < end; i++)
v[i] = aux[i];
}
int main()
{
int n, v[500001], aux[500001], i;
freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
scanf("%d", &n);
for (i = 0; i < n; i++) scanf("%d", &v[i]);
merge(v, 0, n, aux);
for (i = 0; i < n; i++) printf("%d ", v[i]);
printf("\n");
return 0;
}