Cod sursa(job #802830)

Utilizator assa98Andrei Stanciu assa98 Data 26 octombrie 2012 20:29:38
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <stdio.h>

int v[500010],n,aux[500010];

int 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;
}