Pagini recente » Cod sursa (job #2780062) | Cod sursa (job #56105) | Cod sursa (job #2276108) | Cod sursa (job #723551) | Cod sursa (job #795660)
Cod sursa(job #795660)
#include <stdio.h>
#define NMAX 500005
int n,A[NMAX],p1,p2,B[NMAX],r;
void sort(int st,int dr)
{
if (st==dr)
return ;
int mij=(st+dr)/2;
sort(st,mij);
sort(mij+1,dr);
p1=st; p2=mij+1; r=0;
int i;
for (i=1; i<=dr-st+1; i++)
{
if (p1<=mij && p2<=dr)
{
if (A[p1]<A[p2])
B[++r]=A[p1],p1++;
else
B[++r]=A[p2],p2++;
continue ;
}
if (p1<=mij)
B[++r]=A[p1],p1++;
if (p2<=dr)
B[++r]=A[p2],p2++;
}
for (i=st; i<=dr; i++)
A[i]=B[i-st+1];
}
int main()
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
scanf("%d",&n);
int i;
for (i=1; i<=n; i++)
scanf("%d",&A[i]);
sort(1,n);
for (i=1; i<=n; i++)
printf("%d ",A[i]);
printf("\n");
return 0;
}