Cod sursa(job #1424905)

Utilizator laurageorgescuLaura Georgescu laurageorgescu Data 25 aprilie 2015 20:15:34
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include<fstream>

using namespace std;

ifstream fin( "algsort.in" );
ofstream fout( "algsort.out" );

const int nmax = 500000;
int v[ nmax + 1 ];

void my_qsort( int st, int dr ) {
    int piv = v[ (st + dr) / 2 ];
    int i = st, j = dr;
    do {
        while ( i < dr && v[ i ] < piv ) ++ i;
        while ( j > st && v[ j ] > piv ) -- j;
        if ( i <= j ) {
            int aux = v[ i ]; v[ i ] = v[ j ]; v[ j ] = aux;
            ++ i; -- j;
        }
    } while ( i <= j );
    if ( i < dr ) {
        my_qsort( i, dr );
    }
    if ( j > st ) {
        my_qsort( st, j );
    }
}
int main() {
    int n;
    fin >> n;
    for( int i = 1; i <= n; ++ i ) {
        fin >> v[ i ];
    }
    my_qsort( 1, n );
    for( int i = 1; i <= n; ++ i ) {
        fout << v[ i ] << " ";
    }
    fout << "\n";
    fin.close();
    fout.close();
    return 0;
}