Cod sursa(job #1707885)

Utilizator catu_bogdan_99Catu Bogdan catu_bogdan_99 Data 26 mai 2016 01:07:13
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <cstdio>
using namespace std;

#define NMAX 500005

int v[ NMAX ];
int au[ NMAX ];

void merga_sort( int st, int dr );

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 ]);

    merga_sort( 1, n );

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




    return 0;

}

void merga_sort( int st, int dr ){


    if( st >= dr ) return ;

    int mid = ( st + dr ) / 2;
    int i, j, k;

    merga_sort( st, mid );
    merga_sort( mid + 1, dr );

    i = k = st;
    j = mid + 1;

    while( i <= mid || j <= dr ){
        if( ( j > dr ) || ( i <= mid && v[i] < v[j] ) ) au[ k++ ] = v[ i++ ];
        else au[ k++ ] = v[ j++ ];
    }

    for( i = st; i <= dr; ++i )
        v[ i ] = au[ i ];


}