Cod sursa(job #1174877)

Utilizator SpiderManSimoiu Robert SpiderMan Data 24 aprilie 2014 01:03:28
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
# include <algorithm>
# include <cstdio>
# include <cstdlib>
# include <ctime>

const char *FIN = "algsort.in", *FOU = "algsort.out" ;
const int MAX = 500005 ;

int A[MAX] ;
int N ;

void qsort ( int *A, int st, int dr ) {
    int mij = A[st + (dr - st) / 2], min = st, max = dr ;

    while ( min <= max ) {
        for ( ; A[min] < mij; ++min ) ;
        for ( ; A[max] > mij; --max ) ;
        if ( min <= max ) {
            std :: swap ( A[min], A[max] ) ;
            ++min, --max ;
        }
    }
    if ( st < max )
        qsort ( A, st, max ) ;
    if ( dr > min )
        qsort ( A, min, dr ) ;
}

int main ( void ) {
    freopen ( FIN, "r", stdin ) ;
    freopen ( FOU, "w", stdout ) ;

    srand ( time(NULL) ) ;

    scanf ( "%d", &N ) ;
    for ( int i = 1; i <= N; ++i ) {
        scanf ( "%d", A + i ) ;
    }

    qsort ( A, 1, N ) ;

    for ( int i = 1; i <= N; ++i ) {
        printf ( "%d ", A[i] ) ;
    }
}