Pagini recente » Cod sursa (job #2065832) | Cod sursa (job #355469) | Cod sursa (job #2275307) | Cod sursa (job #1272553) | Cod sursa (job #1174877)
# 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 + (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] ) ;
}
}