Cod sursa(job #2670141)

Utilizator LucaMihaiLM10Luca Ilie LucaMihaiLM10 Data 9 noiembrie 2020 09:32:42
Problema Sortare prin comparare Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <stdio.h>
#define NMAX 500000
int v[NMAX];
void myqsort( int begin, int end ) {
    int aux, b, e, p;
    b = begin;
    e = end;
    p = v[(begin + end) / 2];
    while ( v[b] < p )
        b++;
    while ( v[e] > p )
        e--;
    while ( b < e ) {
        aux = v[b];
        v[b] = v[e];
        v[e] = aux;
        do
            b++;
        while ( v[b] < p );
        do
            e--;
        while ( v[e] > p );
    }
    if ( begin < e )
        myqsort( begin, e );
    if ( e + 1 < end )
        myqsort( e + 1, end );
}
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 );
    myqsort( 0, n - 1 );
    fout = fopen( "algsort.out", "w" );
    for ( i = 0; i < n; i++ )
        fprintf( fout, "%d ", v[i] );
    fclose( fout );
    return 0;
}