Pagini recente » Cod sursa (job #92712) | Cod sursa (job #2419283) | Cod sursa (job #2093507) | Cod sursa (job #1254500) | Cod sursa (job #956454)
Cod sursa(job #956454)
#include<cstdio>
using namespace std;
int n,a[500005],v[500005];
void merge(int st, int mij, int dr)
{
int i,j,nr=st-1;
for (i=st,j=mij+1;i<=mij && j<=dr;)
{
if (a[i]<a[j]) v[++nr]=a[i++];
else v[++nr]=a[j++];
}
while (i<=mij) v[++nr]=a[i++];
while (j<=dr) v[++nr]=a[j++];
for (i=st;i<=dr;++i)
a[i]=v[i];
}
void msort(int st, int dr)
{
int mij=(st+dr)/2;
if (st<dr)
{
msort(st,mij);
msort(mij+1,dr);
merge(st,mij,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;
}