Cod sursa(job #2722485)

Utilizator Victor2006Nicola Victor-Teodor Victor2006 Data 12 martie 2021 21:29:16
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <fstream>
#define N 500000

using namespace std;

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

int v[N + 1];
int n;

void quick_sort( int v[], int prim, int ultim ) {
    int st = prim, dr = ultim, piv = v[( prim + ultim ) / 2], aux;
    while ( v[st] < piv )
        st ++;
    while ( v[dr] > piv )
        dr --;
    while ( st < dr ) {
        aux = v[st];
        v[st] = v[dr];
        v[dr] = aux;

        do
            st ++;
        while ( v[st] < piv );
        do
            dr --;
        while ( v[dr] > piv );
    }
    if ( prim < dr )
        quick_sort( v, prim, dr );
    if ( dr + 1 < ultim )
        quick_sort( v, dr + 1, ultim );
}

int main() {
    fin >> n;
    for ( int i = 1; i <= n; i ++ ) {
        fin >> v[i];
    }
    quick_sort( v, 1, n );
    fout << v[1];
    for ( int i = 2; i <= n; i ++ )
        fout << " " << v[i];
    fout << "\n";
    return 0;
}