Cod sursa(job #2670581)

Utilizator Fantastic_Mantudor voicu Fantastic_Man Data 10 noiembrie 2020 11:36:06
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#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;
}