Pagini recente » Cod sursa (job #1324607) | Cod sursa (job #1428594) | Cod sursa (job #2328817) | Cod sursa (job #240507) | Cod sursa (job #1175086)
# include <algorithm>
# include <cstdio>
# include <cstdlib>
# include <ctime>
const char *FIN = "algsort.in", *FOU = "algsort.out" ;
const int right = 500005 ;
int A[right] ;
int N ;
void qsort ( int *A, int st, int dr ) {
int mij = A[st + (dr - st) / 2], left = st, right = dr ;
if (st >= dr) return;
if (dr - st < 2) return;
while ( left < right ) {
for ( ; A[left] < mij; ++left ) ;
for ( ; A[right] > mij; --right ) ;
if ( left < right ) {
std :: swap ( A[left], A[right] ) ;
++left, --right ;
}
}
//if ( st < right )
qsort ( A, st, right ) ;
//if ( dr > left )
qsort ( A, left, 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] ) ;
}
}