Pagini recente » Cod sursa (job #1115030) | Cod sursa (job #1311412) | Cod sursa (job #3164807) | Cod sursa (job #861454) | Cod sursa (job #754014)
Cod sursa(job #754014)
#include <cstdio>
const int MAX_N = 500001 ;
int n;
int v[MAX_N],w[MAX_N];
void MERGE_SORT(int st, int dr)
{
int m=(st+dr)/2;
if(st==dr) return;
MERGE_SORT(st,m);
MERGE_SORT(m + 1,dr);
int a=st;
int b=m+1;
int c=st;
while(a<=m && b<=dr)
{
if(v[a]<v[b])
{
w[c]=v[a];
++c;
++a;
}
else
{
w[c]=v[b];
++c;
++b;
}
}
while(a<=m)
{
w[c]=v[a];
++c;
++a;
}
while(b<=dr)
{
w[c]=v[b];
++c;
++b;
}
for(int i=st;i<=dr;++i)
v[i] = w[i];
}
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]);
MERGE_SORT(1,n);
for(int i=1;i<=n;++i)
printf("%d ",v[i]);
printf("\n");
return 0;
}