Pagini recente » Cod sursa (job #1529568) | Cod sursa (job #1462543) | Cod sursa (job #766869) | Cod sursa (job #1003363) | Cod sursa (job #1342382)
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <algorithm>
using namespace std;
#define IN_FILE "algsort.in"
#define OUT_FILE "algsort.out"
#define MAX_N 500005
int v[ MAX_N ];
void qsort( int left, int right ) {
if( left >= right )
return ;
int i = left;
int j = right;
int p = v[ rand( ) % ( right - left + 1 ) + left ];
while( i <= j ) {
while( v[ i ] < p )
++i;
while( v[ j ] > p )
--j;
if( i <= j )
swap( v[ i++ ], v[ j-- ] );
}
qsort( left, i - 1 );
qsort( i, right );
}
int main( ) {
FILE *f;
int N, i;
f = fopen( IN_FILE, "r" );
fscanf( f, "%d", &N );
for( i = 1; i <= N; ++i )
fscanf( f, "%d", v + i );
fclose( f );
srand( time( 0 ) );
qsort( 1, N );
f = fopen( OUT_FILE, "w" );
for( i = 1; i <= N; ++i )
fprintf( f, "%d ", v[ i ] );
fclose( f );
return 0;
}