Cod sursa(job #2279481)

Utilizator catu_bogdan_99Catu Bogdan catu_bogdan_99 Data 9 noiembrie 2018 16:53:14
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <cstdio>
#include <algorithm>
using namespace std;

#define NMAX 500001
int V[ NMAX ];

void quick_sort( int low, int high ) {

    if ( low >= high ) return ;

    int i, j, p;
    i = low; j = high;
    p = V[ ( i + j ) / 2 ];

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

    while ( V[ j ] == p ) j--;
    while ( V[ i ] == p ) i++;

    quick_sort( low, j );
    quick_sort( i, high );

}

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

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

    return 0;
}