Cod sursa(job #1021690)

Utilizator ciubucmarianCiubuc Florin Marian ciubucmarian Data 4 noiembrie 2013 08:31:19
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <stdio.h>

#define NX 500010

int n,a[NX],b[NX];

void merge_sort(int l, int r) {
    int m=(l+r) >> 1, i, j, k;
    if(l==r) return;
    merge_sort(l,m);
    merge_sort(m+1,r);
    for(i=l,j=m+1,k=l;i<=m || j<= r;)
        if(j>r || (i<=m && a[i] < a[j]))
            b[k++]=a[i++];
        else
            b[k++]=a[j++];
    for(k=l; k<=r; k++)
        a[k]=b[k];
}

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

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

    return 0;
}