Pagini recente » Cod sursa (job #2975144) | Cod sursa (job #2413692) | Cod sursa (job #1845333) | Cod sursa (job #2218495) | Cod sursa (job #1866253)
#include <bits/stdc++.h>
using namespace std ;
const int MAX = 5e5 + 14 ;
int v[MAX] ;
ifstream fin ("algsort.in") ;
ofstream fout ("algsort.out") ;
void Q ( int st , int dr )
{
int i = st ;
int j = dr ;
int piv = v [ st + (rand()%(dr-st+1)) ] ;
do{
while ( i <= dr and v [i] < piv ) ++ i ;
while ( j >= st and v [j] > piv ) -- j ;
if ( i <= j ) {
swap ( v[i++], v[j--] ) ;
}
}while ( i <= j ) ;
if ( j > st ) Q ( st, j ) ;
if ( i < dr ) Q ( i, dr ) ;
}
int main ()
{
int n ;
fin >> n ;
for ( int i = 1 ; i <= n ; ++ i ) {
fin >> v[i] ;
}
srand (time(NULL)) ;
Q (1,n) ;
for ( int i = 1 ; i <= n ; ++ i ) {
fout << v [i] << ' ' ;
}
return 0 ;
}