Pagini recente » Cod sursa (job #2654392) | Cod sursa (job #2101404) | Cod sursa (job #1973647) | Cod sursa (job #1568579) | Cod sursa (job #802833)
Cod sursa(job #802833)
#include <stdio.h>
int v[500010],n,aux[500010];
void merge(int s,int f)
{
int mij= (s+f)/2;
int i=s;
int j=mij+1;
int poz=s-1;
while (i <= mij && j <= f) {
if (v[i] <= v[j]) {
aux[++poz] = v[i];
i++;
}
else {
aux[++poz] = v[j];
j++;
}
}
for(i;i <= mij;i++)
aux[++poz] = v[i];
for(j; j <= f; j++)
aux[++poz] = v[j];
for(int sp=s;sp<=f;sp++)
v[sp]=aux[sp];
}
void mergesort(int s,int f)
{
if(s==f)
return;
int mij=(s+f)/2;
mergesort(s,mij);
mergesort(mij+1,f);
merge(s,f);
}
int main()
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&v[i]);
mergesort(1,n);
for(int i=1;i<=n;i++)
printf("%d ",v[i]);
return 0;
}