Pagini recente » Cod sursa (job #2745746) | Cod sursa (job #2463302) | Cod sursa (job #290116) | Cod sursa (job #745339) | Cod sursa (job #723906)
Cod sursa(job #723906)
#include <cstdio>
#define NMax 500021
int a[NMax],b[NMax],n;
void mergesort(int lo,int hi) {
int mid=lo+((hi-lo)>>1),i,j,k;
if(lo==hi) return;
mergesort(lo,mid);
mergesort(mid+1,hi);
for(i=lo,j=mid+1,k=lo;i<=mid || j<=hi;k++)
if( j>hi || ( a[i]<a[j] && i<=mid) )
b[k]=a[i++];
else
b[k]=a[j++];
for(int i=lo;i<=hi;i++)
a[i]=b[i];
}
int main() {
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
scanf("%d",&n);
for(int o=1;o<=n;o++)
scanf("%d",&a[o]);
mergesort(1,n);
for(int o=1;o<=n;o++)
printf("%d ",a[o]);
printf("\n");
return 0;
}