Cod sursa(job #1021689)

Utilizator ciubucmarianCiubuc Florin Marian ciubucmarian Data 4 noiembrie 2013 08:26:10
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 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
            a[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;
}