Cod sursa(job #1598594)

Utilizator Paula-ElenaPaula-Elena Margarit Paula-Elena Data 13 februarie 2016 00:56:27
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>
using namespace std;

const int MAXN = 500003;

int v[MAXN], N;

void read() {

    ifstream fin("algsort.in");

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

    fin.close();
}

void quicksort( int first, int last ) {
    int pivot = v[ (first + last) / 2 ];
    int i = first;
    int j = last;

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

    if ( j > first )
        quicksort( first, j);
    if ( i < last )
        quicksort( i, last);
}

void write() {

    ofstream fout("algsort.out");

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

    fout.close();
}

int main() {

    read();
    quicksort( 1, N);
    write();

    return 0;
}