Cod sursa(job #1785538)

Utilizator BLz0rDospra Cristian BLz0r Data 21 octombrie 2016 15:25:24
Problema Sortare prin comparare Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
/* Sortare folosita: QSort */
#include <fstream>
#include <algorithm>
using namespace std;

#define Nmax 500002

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

int v[Nmax];

int Partitionare(int st, int dr) {

    int pivot = v[dr];

    int i = st;
    for (int j = st; j < dr; ++j) {

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

    return i;
}

void QSort(int st, int dr) {

    if (st >= dr)
        return;

    int poz = Partitionare(st, dr);

    QSort(st, poz - 1);
    QSort(poz + 1, dr);
};

int main() {

    int N;

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

    random_shuffle(v + 1, v + N + 1);

    QSort(1, N);

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

    return 0;
}