Pagini recente » Cod sursa (job #366486) | Cod sursa (job #999707) | Cod sursa (job #1521413) | Cod sursa (job #1221964) | Cod sursa (job #2670581)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
using namespace std;
const int NMAX = 500000;
int v[NMAX];
void Qsort ( int begin, int end, int v[] ) {
int b = begin, e = end, pivot = v[b + rand() % ( e - b )], aux;
while ( v[b] < pivot )
b++;
while ( v[e] > pivot )
e--;
while ( b < e ) {
aux = v[b];
v[b] = v[e];
v[e] = aux;
do b++; while ( v[b] < pivot );
do e--; while ( v[e] > pivot );
}
if ( begin < e )
Qsort( begin, e , v );
if ( e + 1 < end )
Qsort( e + 1, end, v );
}
int main() {
FILE *fin, * fout;
int n, i;
fin = fopen ( "algsort.in", "r" );
fscanf ( fin, "%d", &n );
for ( i = 0; i < n; i++ )
fscanf ( fin, "%d ", &v[i] );
fclose ( fin );
srand ( time ( NULL ) );
Qsort ( 0, n - 1, v );
fout = fopen ( "algsort.out", "w" );
for ( i = 0; i < n; i++ )
fprintf ( fout, "%d ", v[i] );
fclose ( fout );
return 0;
}