Pagini recente » Cod sursa (job #1465665) | Cod sursa (job #2386144) | Cod sursa (job #1113404) | Cod sursa (job #2787067) | Cod sursa (job #732358)
Cod sursa(job #732358)
# include <algorithm>
# include <cstdio>
# include <cstdlib>
# include <ctime>
const char *FIN = "algsort.in", *FOU = "algsort.out" ;
const int MAX = 500005 ;
int A[MAX] ;
int N ;
void qsort ( int *A, int st, int dr ) {
int mij = A[st + rand () % ( dr - st ) / 2], min = st, max = dr ;
while ( min <= max ) {
for ( ; A[min] < mij; ++min ) ;
for ( ; A[max] > mij; --max ) ;
if ( min <= max ) {
std :: swap ( A[min], A[max] ) ;
++min, --max ;
}
}
if ( st < max )
qsort ( A, st, max ) ;
if ( dr > min )
qsort ( A, min, dr ) ;
}
int main ( void ) {
freopen ( FIN, "r", stdin ) ;
freopen ( FOU, "w", stdout ) ;
srand ( time(NULL) ) ;
scanf ( "%d", &N ) ;
for ( int i = 1; i <= N; ++i ) {
scanf ( "%d", A + i ) ;
}
qsort ( A, 1, N ) ;
for ( int i = 1; i <= N; ++i ) {
printf ( "%d ", A[i] ) ;
}
}