Pagini recente » Cod sursa (job #1130634) | Cod sursa (job #2683447) | Cod sursa (job #796447) | Cod sursa (job #1876159) | Cod sursa (job #368706)
Cod sursa(job #368706)
#include <stdio.h>
#define N 500001
int n,v[N],A[N],r;
void interclaseaza(int st,int dr)
{
r=0;
int mij,start2=st,start;
mij=(st+dr)/2;
start=mij+1;
while (start2<=mij && start<=dr)
if (v[start2]<=v[start])
A[++r]=v[start2++];
else
A[++r]=v[start++];
while (start2<=mij)
A[++r]=v[start2++];
while (start<=dr)
A[++r]=v[start++];
for (int i=st; i<=dr; i++)
v[i]=A[i-st+1];
}
void sorteaza(int st,int dr)
{
int mij=(st+dr)/2;
if (st==dr)
return ;
sorteaza(st,mij);
sorteaza(mij+1,dr);
interclaseaza(st,dr);
}
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",&v[i]);
sorteaza(1,n);
for (i=1; i<=n; i++)
printf("%d ",v[i]);
return 0;
}