Pagini recente » Cod sursa (job #1070831) | Cod sursa (job #2736949) | Cod sursa (job #2289476) | Cod sursa (job #3255744) | Cod sursa (job #1067621)
#include<cstdio>
using namespace std;
#define NMAX 500005
int n,k,a[NMAX],v[NMAX];
void inter(int st, int mj, int dr)
{
int i,j;
for (i=st,j=mj+1,k=st-1;i<=mj && j<=dr;)
if (a[i]<a[j])
v[++k]=a[i++];
else
v[++k]=a[j++];
for (;i<=mj;++i)
v[++k]=a[i];
for (;j<=dr;++j)
v[++k]=a[j];
for (i=st;i<=dr;++i)
a[i]=v[i];
}
void msort(int st, int dr)
{
if (st<dr)
{
int mj=(st+dr)/2;
msort(st,mj);
msort(mj+1,dr);
inter(st,mj,dr);
}
}
int main()
{
int i;
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
scanf("%d",&n);
for (i=1;i<=n;++i)
scanf("%d",&a[i]);
msort(1,n);
for (i=1;i<=n;++i)
printf("%d ",a[i]);
printf("\n");
return 0;
}