Cod sursa(job #832531)

Utilizator Aida_SilviaStrimbeanu Aida Silvia Aida_Silvia Data 10 decembrie 2012 21:10:53
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include <cstdio>

using namespace std;

int v[500073];

void merge(int start,int med,int end)
{
    int i,j;
    int Aux[end-start+2],poz = 0;
    for(i=start,j=med+1;i<=med||j<=end;)
    {
        if(i<=med&&j<=end)
            if(v[i]<v[j])
                 Aux[poz++] = v[i++];
            else Aux[poz++] = v[j++];
        else
            if(i<=med)
                Aux[poz++] = v[i++];
            else
                Aux[poz++] = v[j++];
    }
    for(i=0;i<poz;i++)
        v[start+i] = Aux[i];
}


void mergesort(int start,int end)
{
    int med=(start+end)/2;

     if (start==end)
        return;
        else
        {
            mergesort(start,med);
            mergesort(med+1,end);
            merge(start,med,end);

        }
}

int main()
{
    freopen("algsort.in","r",stdin);
    freopen("algsort.out","w",stdout);

    int n,i;

    scanf("%d",&n);

    for (i=1;i<=n;i++)
     scanf("%d",&v[i]);

    mergesort(1,n);

    for (i=1;i<=n;i++)
        printf("%d ",v[i]);


    return 0;
}