Cod sursa(job #2722474)

Utilizator Victor2006Nicola Victor-Teodor Victor2006 Data 12 martie 2021 21:16:32
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 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 = ( prim + ultim ) / 2, aux;
    while ( v[st] < v[piv] )
        st ++;
    while ( v[dr] > v[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, 0, n );
    fout << v[1];
    for ( int i = 2; i <= n; i ++ )
        fout << " " << v[i];
    fout << "\n";
    return 0;
}