Cod sursa(job #2274880)

Utilizator catu_bogdan_99Catu Bogdan catu_bogdan_99 Data 2 noiembrie 2018 17:02:44
Problema Sortare prin comparare Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <cstdio>
#include <iostream>
using namespace std;

#define NMAX 500001

void quick_sort( int *V, int st, int dr ) {

    if ( st >= dr ) return ;

    int i, j, piv;
    i = st; j = dr - 1; piv = dr;

    swap( V[ ( st + dr ) / 2 ], V[ dr ] );

    while ( i <= j ) {
        while ( V[ i ] < V[ piv ] ) i++;
        while ( V[ j ] >= V[ piv ] ) j--;
        if ( i < j ) {
            swap( V[ i ], V[ j ] );
            i++;
            j--;
        }
    }

    swap( V[ i ], V[ piv ] );

    quick_sort( V, st, i - 1 );
    quick_sort( V, i + 1, dr );


}

int main () {

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

    int n, i;
    int V[ NMAX ] = { 0 };

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

    quick_sort( V, 1, n );

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


    return 0;

}