Pagini recente » Cod sursa (job #1780629) | Cod sursa (job #189559) | Cod sursa (job #217472) | Cod sursa (job #2852143) | Cod sursa (job #379809)
Cod sursa(job #379809)
#include <fstream>
#include <cstdlib>
using namespace std;
#define in "algsort.in"
#define out "algsort.out"
const int NMAX = 500005;
int A[NMAX], N;
int Part( int st, int dr)
{
int i, j, pivot;
i = rand()%(dr-st+1)+st;
pivot = A[i];
i = st - 1, j = dr + 1;
while ( 1 )
{
do { j--; } while ( A[j] > pivot );
do { i++; } while ( A[i] < pivot );
if ( i < j )
{
A[i] ^= A[j];
A[j] ^= A[i];
A[i] ^= A[j];
}
else return j;
}
}
void QuickSort( int st, int dr )
{
if ( st < dr )
{
int q = Part(st,dr);
QuickSort(st,q);
QuickSort(q+1,dr);
}
}
int main ( void )
{
freopen ( in, "r", stdin );
freopen ( out, "w", stdout );
scanf ( "%d", &N );
int i;
for ( i = 1; i <= N; scanf ( "%d", A+i++ ) );
srand( time(NULL) );
QuickSort( 1, N );
for ( i = 1; i <= N; printf ( "%d ", A[i++] ) );
return 0;
}