Cod sursa(job #1813726)

Utilizator andreea_zahariaAndreea Zaharia andreea_zaharia Data 23 noiembrie 2016 11:19:36
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <fstream>
#include <cstdlib>
#include <ctime>

using namespace std;

const int NMAX = 500010;
int N;
int v[NMAX];

void QuickSort (int inc, int sf) {
    int aux, i = inc, s = sf;
    int pivot = v[inc + rand() % (sf - inc + 1)];

    while (i <= s) {
        while (v[i] < pivot) i++;
        while (v[s] > pivot) s--;

        if (i <= s) {
            aux = v[i];
            v[i] = v[s];
            v[s] = aux;
            i++;
            s--;
        }
    }

    if (inc < s)
        QuickSort (inc, s);
    if (i < sf)
        QuickSort (i, sf);
}

ifstream fin ("algsort.in");
ofstream fout ("algsort.out");

int main () {
    srand (time(NULL));
    fin >> N;
    for (int i = 1; i <= N; i++) {
        fin >> v[i];
    }
    QuickSort (1, N);
    for (int i = 1; i <= N; i++) {
        fout << v[i] << " ";
    }
    fout << '\n';

    return 0;
}