Pagini recente » Cod sursa (job #1228975) | Cod sursa (job #1909401) | Cod sursa (job #1346520) | Cod sursa (job #1700629) | Cod sursa (job #283337)
Cod sursa(job #283337)
#include <stdio.h>
int v[500001],a[500001];
int i,n;
void merge (int x, int y)
{
int m,i,k,j;
if (x>=y) return;
m=(x+y)/2;
merge (x,m);
merge (m+1,y);
i=x;
j=m+1;
k=x-1;
while (i<=m && j<=y){
if (v[i]<=v[j]) a[++k]=v[i++];
else a[++k]=v[j++];
}
if (i>m) while (j<=y) a[++k]=v[j++];
else while (i<=m) a[++k]=v[i++];
for (i=x;i<=y;i++) v[i]=a[i];
}
int main ()
{
freopen ("algsort.in","r",stdin);
freopen ("algsort.out","w",stdout);
scanf ("%d",&n);
for (i=1;i<=n;i++) scanf ("%d",&v[i]);
merge (1,n);
for (i=1;i<=n;i++) printf ("%d ",v[i]);
return 0;
}