Cod sursa(job #1394933)

Utilizator greenadexIulia Harasim greenadex Data 20 martie 2015 20:49:32
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <ctime>

using namespace std;

int a[500000];

int part(int l, int r) {
    int pivot = a[rand() % (r - l + 1) + l];
    int i = l - 1, j = r + 1;
    while (true) {
        do j--;
        while (a[j] > pivot);
        do i++;
        while (a[i] < pivot);
        if (i < j)
            swap(a[i], a[j]);
        else return j;
    }
}

void QS(int l, int r) {
    if (l < r) {
        int m = part(l, r);
        QS(l, m);
        QS(m + 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;
}