Cod sursa(job #1727947)

Utilizator silkMarin Dragos silk Data 11 iulie 2016 22:14:50
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <cstdio>
#define NMax 500005
int v[NMax];

void interclasare( int p,int m,int q )
{
    int b[NMax],k=0,i,j;

    for( i = p, j = m + 1; i <= m && j <= q; )
    if( v[i] <= v[j] ) b[k++] = v[i++];
    else b[k++] = v[j++];

    while( i <= m ) b[k++] = v[i++];
    while( j <= q ) b[k++] = v[j++];

    for( i = p; i <= q; ++i ) v[i] = b[i-p];
}

void MSort(int p,int q)
{
    if( q > p )
    {
       int m = (p+q)/2;
       MSort( p, m );
       MSort( m+1, q );
       interclasare(p,m,q);
    }
}

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

    int i,n;

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

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


return 0;
}