Pagini recente » Cod sursa (job #1631949) | Cod sursa (job #2155493) | Cod sursa (job #2000512) | Cod sursa (job #2504498) | Cod sursa (job #317630)
Cod sursa(job #317630)
#include<stdio.h>
using namespace std;
long n,v[500001];
void sort(int p,int q)
{
if(v[p]>v[q]){v[p]^=v[q];v[q]^=v[p];v[p]^=v[q];}
}
void intercl(int li,int ls,int m)
{
long a[500001],i,j,k;
i=li;j=m+1;k=1;
while( (i<=m) && (j<=ls) )
{
if(v[i]<=v[j])a[k++]=v[i++];
else a[k++]=v[j++];
}
if(i<=m)for(j=i;j<=m;j++)a[k++]=v[j];
else for(i=j;i<=ls;i++)a[k++]=v[i];
k=1;
for(i=li;i<=ls;i++)v[i]=a[k++];
}
void merge(int li,int ls)
{
int m;
if( (ls-li) <=1 ) sort(li,ls);
else
{
m=(li+ls)/2;
merge(li,m);
merge(m+1,ls);
intercl(li,ls,m);
}
}
int main()
{
long i;
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
scanf("%ld",&n);
for(i=1;i<=n;i++)scanf("%ld",&v[i]);
merge(1,n);
for(i=1;i<=n;i++)printf("%ld ",v[i]);
return 0;
}