Cod sursa(job #1394824)

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

using namespace std;

long long a[500000];

int part(long long A[], int l, int r) {
    int poz = rand() % (r - l + 1) + l;
    long long 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(long long A[], int l, int r) {
    if (l < r) {
        int q = part(A, l, r);
        QS(A, l, q - 1);
        QS(A, 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(a, 0, n - 1);
    for (i = 0; i < n; i++)
        fout << a[i] << ' ';
    return 0;
}