Pagini recente » Cod sursa (job #620823) | Cod sursa (job #1810385) | Cod sursa (job #2678491) | Cod sursa (job #2408067) | Cod sursa (job #1807511)
#include <cstdio>
#include <algorithm>
#include <cstring>
#define in "algsort.in"
#define out "algsort.out"
#define NMAX (500000 + 7)
using namespace std;
int n, v[NMAX], aux[NMAX];
void merge(const int &st, const int &mid, const int &dr)
{
int p1 = st, p2 = mid+1;
for(int i = st; i<= dr; ++i)
{
if(p2 > dr)
{
aux[i] = v[p1];
++p1;
continue;
}
if(p1 > mid)
{
aux[i] = v[p2];
++p2;
continue;
}
if(v[p1] < v[p2])
{
aux[i] = v[p1];
++p1;
continue;
}
aux[i] = v[p2];
++p2;
}
for(int i = st; i<= dr; ++i) v[i] = aux[i];
}
void sortare(const int &st, const int &dr)
{
if(st == dr) return ;
int mij = ((st+dr)>>1);
sortare(st, mij);
sortare(mij+1, dr);
merge(st, mij, dr);
}
int main()
{
freopen(in, "r", stdin);
freopen(out, "w", stdout);
scanf("%d", &n);
for(int i = 1; i<= n; ++i) scanf("%d ", &v[i]);
sortare(1, n);
for(int i = 1; i<= n; ++i) printf("%d ", v[i]);
printf("\n");
return 0;
}