Pagini recente » Cod sursa (job #356831) | Cod sursa (job #547531) | Cod sursa (job #2064401) | Cod sursa (job #3149483) | Cod sursa (job #513327)
Cod sursa(job #513327)
//de Mihai Agape
#include <stdio.h>
int N,numere[500005],numerec[500005],i;
void rezolvare(int,int);
int main()
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
for(scanf("%d",&N);i<N;i++)scanf("%d",&numere[i]);
rezolvare(0,N-1);
for(i=0;i<N;i++)printf("%d ",numere[i]);
return 0;
}
void rezolvare(int st,int dr)
{
if(st==dr)return;
int m=(st+dr)>>1,i,j,k;
rezolvare(st,m),rezolvare(m+1,dr);
for(i=st,j=m+1,k=st;i<=m||j<=dr;k++)
numerec[k]=(j>dr||(i<=m&&numere[i]<numere[j]))?numere[i++]:numere[j++];
for(i=st;i<=dr;i++)numere[i]=numerec[i];
}