Cod sursa(job #1639829)

Utilizator RaduToporanRadu Toporan RaduToporan Data 8 martie 2016 14:13:25
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#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;
}