Cod sursa(job #614528)

Utilizator gramatovici_paulGramatovici Paul gramatovici_paul Data 6 octombrie 2011 19:24:50
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <cstdio>

using namespace std;



int v[500100],w[500100];



void interclaseaza(int a, int b)
{
    int i=a, mij=(a+b)/2, j=mij+1, nr=0;
    while(i<=mij && j<=b)
    {
        if (v[i]<v[j])
        {
            w[++nr]=v[i];
            i++;
        }
        else
        {
            w[++nr]=v[j];
            j++;
        }
    }
    for(;i<=mij;i++)
    {
        w[++nr]=v[i];
    }
    for(;j<=b;j++)
    {
        w[++nr]=v[j];
    }
    for(i=a;i<=b;++i)
        v[i]=w[i-a+1];
}



void sort(int a, int b)
{
    int mij;
    if(a==b)
        return;
    mij=(a+b)/2;
    sort(a,mij);
    sort(mij+1,b);
    interclaseaza(a,b);
}


int main()
{
    int n, i;
    freopen("algsort.in","r",stdin);
    freopen("algsort.out","w",stdout);
    scanf("%d",&n);
    for(i=1;i<=n;++i)
        scanf("%d",&v[i]);
    sort(1,n);
    for(i=1;i<=n;++i)
        printf("%d ",v[i]);
    return 0;
}