Cod sursa(job #1394831)

Utilizator greenadexIulia Harasim greenadex Data 20 martie 2015 18:54:08
Problema Sortare prin comparare Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <ctime>
#include <cstdlib>
#include <fstream>
#include <algorithm>

using namespace std;

int A[500000];

int part(int l, int r) {
    int poz = rand() % (r - l + 1) + l;
    int pivot = A[poz];
    swap(A[poz], A[r]);
    int i = l - 1;
    for (int j = l; j < r; j++)
        if (A[j] <= pivot) {
            i++;
            swap(A[i], A[j]);
        }
    swap(A[i + 1], A[r]);
    return i + 1;
}

void QS(int l, int r) {
    if (l < r) {
        int q = part(l, r);
        QS(l, q - 1);
        QS(q + 1, r);
    }
}

int main() {
    srand(time(0));
    ifstream fin("algsort.in");
    ofstream fout("algsort.out");
    int n, i;
    fin >> n;
    for (i = 0; i < n; i++)
        fin >> A[i];
    QS(0, n - 1);
    for (i = 0; i < n; i++)
        fout << A[i] << ' ';
    return 0;
}