Pagini recente » Cod sursa (job #3255066) | Cod sursa (job #321726) | Cod sursa (job #2899347) | Cod sursa (job #1048) | Cod sursa (job #272197)
Cod sursa(job #272197)
#include <stdio.h>
#include <stdlib.h>
#include<algorithm>
using namespace std;
FILE *f,*g;
long nt,a[500001];;
void insbn(long x)
{ long i, p, u, mj;
p=0; u=nt;
while(p<=u)
{ mj=(p+u)/2;
if(x<a[mj])
u=mj-1;
else
p=mj+1;
}
for(i=nt+1; i>p; i--)
{ a[i]=a[i-1];
}
a[p]=x;
nt++;
}
void intercls(long p,long mj,long u)
{
long i=p,j=mj+1,k=0,c[500001];
while(i<=mj && j<=u)
if(a[i]<a[j])c[++k]=a[i++];
else c[++k]=a[j++];
while(i<=mj)c[++k]=a[i++];
while(j<=u)c[++k]=a[i++];
for(i=1;i<=k;i++)a[i+p-1]=c[i];
}
void sort (long p,long u)
{
if(p<u)
{
long mj=(p+u)/2;
sort(p,mj);
sort(mj+1,u);
intercls(p,mj,u);
}
}
int main()
{
long n,i;
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
scanf("%ld",&n);
nt=0;
for(i=0; i<n; i++)
scanf("%ld",&a[i]);
sort(0,n-1);
//sort(a,a+n);
for(i=0; i<n; i++) printf("%ld ",a[i]);
return 0;
}