Pagini recente » Cod sursa (job #362800) | Cod sursa (job #2982390) | Cod sursa (job #1226207) | Cod sursa (job #1934689) | Cod sursa (job #1239496)
#include<cstdio>
#define nx 500007
int n,i,v[nx];
using namespace std;
void sort(int l,int r)
{
int m=(l+r)/2,i=l,j=m+1,k=0,a[nx];
while(i<=m && j<=r)
{
while(v[i]<=v[j] && i<=m)a[++k]=v[i++];
while(v[i]>=v[j] && j<=r)a[++k]=v[j++];
}
if(i>m)while(j<=r)a[++k]=v[j++];
else while(i<=m)a[++k]=v[i++];
for(i=l;i<=r;i++)v[i]=a[i-l+1];
}
void merge(int l,int r)
{
if(l==r)return;
merge(l,(l+r)/2);
merge((l+r)/2+1,r);
sort(l,r);
}
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;
}