Pagini recente » Cod sursa (job #766868) | Cod sursa (job #1074043) | Cod sursa (job #1028751) | Cod sursa (job #1598944) | Cod sursa (job #1246446)
#include <iostream>
#include<cstdio>
using namespace std;
int n,v[500001],r[500001];
void mergesort(int stg, int drp)
{
if((drp-stg) <= 1){if(v[stg]>v[drp]){ int aux=v[stg]; v[stg]=v[drp]; v[drp]=aux;} }
else {
int mij=(stg+drp)>>1;
mergesort(stg,mij);
mergesort(mij+1,drp);
int dim=1;
int i=stg,j=mij+1;
while((i<=mij) && (j<=drp)) if(v[i]<v[j])r[dim++]=v[i++];
else r[dim++]=v[j++];
while(i<=mij)r[dim++]=v[i++];
while(j<=drp)r[dim++]=v[j++];
dim--;
for(int k=drp; k>=stg; k--)v[k]=r[dim--];
}
}
int main()
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
scanf("%d",&n);
for(int i=1; i<=n; i++)scanf("%d",&v[i]);
mergesort(1,n);
for(int i=1; i<=n; i++)printf("%d ",v[i]);
return 0;
}