Cod sursa(job #1175081)

Utilizator SpiderManSimoiu Robert SpiderMan Data 24 aprilie 2014 14:10:06
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
# include <algorithm>
# include <cstdio>
# include <cstdlib>
# include <ctime>

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

int A[right] ;
int N ;

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

    while ( left < right ) {
        for ( ; A[left] < mij; ++left ) ;
        for ( ; A[right] > mij; --right ) ;
        if ( left < right ) {
            std :: swap ( A[left], A[right] ) ;
            ++left, --right ;
        }
    }
    if ( st < right )
        qsort ( A, st, right ) ;
    if ( dr > left )
        qsort ( A, left, 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] ) ;
    }
}