Pagini recente » Cod sursa (job #2482701) | Cod sursa (job #1354185) | Cod sursa (job #1224268) | Cod sursa (job #1492322) | Cod sursa (job #1779446)
#include <cstdio>
using namespace std;
const int NMAX = 500000;
int v[NMAX + 5], aux[NMAX + 5];
void merge(int st, int dr){
if (st == dr)
return ;
int med = (st + dr) / 2;
merge(st, med);
merge(med + 1, dr);
int k = 0, i = st, j = med + 1;
while (i <= med && j <= dr){
if (v[j] < v[i])
aux[++k] = v[j++];
else
aux[++k] = v[i++];
}
while (i <= med)
aux[++k] = v[i++];
while (j <= dr)
aux[++k] = v[j++];
for (i = st; i <= dr; i ++)
v[i] = aux[i - st + 1];
}
int main(){
freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
int n, i;
scanf("%d", &n);
for (i = 1; i <= n; i ++)
scanf("%d", &v[i]);
merge(1, n);
for (i = 1; i <= n; i ++)
printf("%d ", v[i]);
return 0;
}