Pagini recente » Cod sursa (job #3289288) | Cod sursa (job #1550296) | Cod sursa (job #2230722) | Cod sursa (job #2859231) | Cod sursa (job #1232925)
#include <stdio.h>
#define N_MAX 500000
int v[ N_MAX + 1 ];
void qsort( int beg, int end ) {
if( end - beg > 1 ) {
int piv = v[ ( beg * 3 + end * 5 ) / 8 ];
int l = beg - 1, r = end;
while( l < r ) {
while( v[ ++ l ] < piv );
while( v[ -- r ] > piv );
if( l < r ) {
int aux = v[ l ];
v[ l ] = v[ r ];
v[ r ] = aux;
}
}
if( l <= ( beg + end ) / 2 ) {
qsort( beg, l );
qsort( l, end );
} else {
qsort( l, end );
qsort( beg, l );
}
}
}
int main( ) {
FILE * fin, * fout;
fin = fopen( "algsort.in", "r" );
fout = fopen( "algsort.out", "w" );
int N;
fscanf( fin, "%d", &N );
int i;
for( i = 1; i <= N; i ++ ) {
fscanf( fin, "%d", v + i );
}
qsort( 1, N + 1 );
for( i = 1; i <= N; i ++ ) {
fprintf( fout, "%d ", v[ i ] );
}
fclose( fin );
fclose( fout );
}