Pagini recente » Cod sursa (job #279316) | Cod sursa (job #3189346) | Cod sursa (job #1041411) | Cod sursa (job #1790241) | Cod sursa (job #2800987)
#include <iostream>
#include <fstream>
using namespace std;
const int N = 500001;
int v [ N ];
void quicksort( int v[], int n ) {
if ( n <= 1 )
return;
int a = v [ rand() % n ];
int st = 0, mij = 0, dr = 0, aux;
while ( st + mij + dr != n ) {
int x = st + mij;
if ( a > v [ x ] ){
aux = v [ x ];
v [ x ] = v [ st ];
v [ st ] = aux;
st++;
}
else if ( a < v [ x ] ) {
aux = v [ x ];
v [ x ] = v [ n - dr - 1 ];
v [ n - dr - 1 ] = aux;
dr++;
}
else {
mij++;
}
}
quicksort( v, st );
quicksort( v + st + mij, dr );
}
int main() {
ifstream fin ( "algsort.in" );
ofstream fout ( "algsort.out" );
int n, i;
fin >> n;
for ( i = 0; i < n; i++ )
fin >> v [ i ];
quicksort( v, n );
for ( i = 0; i < n; i++ )
fout << v [ i ] << " ";
return 0;
}