Pagini recente » Cod sursa (job #2770137) | Cod sursa (job #2006423) | Cod sursa (job #3135451) | Cod sursa (job #74173) | Cod sursa (job #1882311)
#include <cstdio>
#define NMAX 1000000+5
using namespace std;
int N,v[NMAX],c[NMAX];
void merges(int st,int mid,int dr)
{
for(int i=st;i<=dr;i++)
c[i]=v[i];
int i=st;
int j=mid+1;
int k=st-1;
while(i<=mid&&j<=dr)
if(c[i]<=c[j])v[++k]=c[i++];
else v[++k]=c[j++];
for(int t=i;t<=mid;t++)
v[++k]=c[t];
for(int t=j;t<=dr;t++)
v[++k]=c[t];
}
void mergesort(int st,int dr)
{
int mid=(st+dr)>>1;
if(st!=dr)
{
mergesort(st,mid);
mergesort(mid+1,dr);
}
merges(st,mid,dr);
}
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;
}