Pagini recente » Cod sursa (job #2512414) | Cod sursa (job #1060901) | Cod sursa (job #337571) | Cod sursa (job #2391302) | Cod sursa (job #1639829)
#include <cstdio>
int n,i,a[500005];
void interclasare(int p, int mij, int u)
{
int b[500005],k=0;
int i=p,j=mij+1;
while (i<=mij && j<=u)
{
if (a[i]<a[j]) b[++k]=a[i],i++;
else b[++k]=a[j],j++;
}
for (; i<=mij; i++)
b[++k]=a[i];
for (; j<=u; j++)
b[++k]=a[j];
for (i=1; i<=k; i++)
a[p+i-1]=b[i];
}
void sortare(int p, int u)
{
if (p<u)
{
int mij=(p+u)/2;
sortare(p,mij);
sortare(mij+1,u);
interclasare(p,mij,u);
}
}
int main()
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
scanf("%d",&n);
for (i=1; i<=n; i++)
scanf("%d",&a[i]);
sortare(1,n);
for (i=1; i<=n; i++)
printf("%d ",a[i]);
return 0;
}