Pagini recente » Cod sursa (job #3122326) | Cod sursa (job #512744) | Cod sursa (job #931899) | Cod sursa (job #827593) | Cod sursa (job #1265359)
#include <stdio.h>
const int N=500001;
int aux[N];
void myMerge (int st,int dr,int v[N])
{
int i, k, j;
int m=(st+dr)/2;
i=k=st;
j=m+1;
while ( i<=m && j<=dr)
if (v[i]<=v[j])
aux[k++]=v[i++];
else
aux[k++]=v[j++];
while (i<=m) aux[k++]=v[i++];
while (j<=dr) aux[k++]=v[j++];
for (i=st; i<=dr; i++)
v[i]=aux[i];
}
void ms(int st,int dr,int v[N])
{
if (st==dr) return;
int m=(st+dr)/2;
ms(st,m,v);
ms(m+1,dr,v);
myMerge (st,dr,v);
}
int main()
{
int i,a,n,st,dr,v[N];
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
scanf("%d",&n);
for (i=1;i<=n;i++)
scanf("%d",&v[i]);
ms(1,n,v);
for(i=1;i<=n;i++)
printf("%d ",v[i]);
}