Cod sursa(job #1598280)

Utilizator Paula-ElenaPaula-Elena Margarit Paula-Elena Data 12 februarie 2016 19:25:13
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <fstream>
using namespace std;

const int MAXN = 500003;

void read( int &N, int v[] ) {
    ifstream fin("algsort.in");

    fin >> N;
    for ( int i = 0; i < N; ++i )
        fin >> v[i];
}

void quicksort( int v[], int first, int last ) {
    if ( last < first )
        return;

    int pivot = v[ first ];
    int i = first + 1;
    int j = last;

    while ( i < j ) {
        while ( i <= last && v[i] < pivot )
            ++i;
        while ( j >= 0 && v[j] > pivot )
            --j;
        if ( i < j )
            swap( v[i], v[j] );
    }

    swap( v[j], v[first] );

    quicksort( v, first, j-1 );
    quicksort( v, j+1, last );
}

void write( int N, int v[] ) {
    ofstream fout("algsort.out");

    for ( int i = 0; i < N; ++i )
        fout << v[i] << ' ';
}

int main () {
    int N, v[MAXN];

    read( N, v );
    quicksort( v, 0, N-1 );
    write( N, v );

    return 0;
}