Pagini recente » Cod sursa (job #2614355) | Cod sursa (job #2391208) | Cod sursa (job #3173554) | Cod sursa (job #2187606) | Cod sursa (job #1718670)
#include <bits/stdc++.h>
using namespace std;
const int NMAX = 500005;
int v[NMAX], aux[NMAX];
void merge(int xa, int ya, int xb, int yb) {
for(int i=0; xa<=ya || xb<=yb; ++i)
if(xa<=ya && (v[xa]<=v[xb] || xb>yb))
aux[i]=v[xa++];
else
aux[i]=v[xb++];
}
void my_sort(int st, int dr) {
if(st>=dr)
return;
int m = (st + dr) / 2;
my_sort(st, m);
my_sort(m+1, dr);
merge(st, m, m+1, dr);
for(int i=0; i<=dr-st; ++i)
v[st+i] = aux[i];
}
int main(void) {
freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
int n;
scanf("%d",&n);
for(int i=1; i<=n; ++i)
scanf("%d",&v[i]);
my_sort(1, n);
for(int i=1; i<=n; ++i)
printf("%d ",v[i]);
printf("\n");
fclose(stdin);
fclose(stdout);
return 0;
}