Cod sursa(job #1080329)

Utilizator cosmo0093Raduta Cosmin cosmo0093 Data 12 ianuarie 2014 14:54:30
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <fstream>
#include <ctime>
#include <cstdlib>
#include <utility>

void quick(int *Arr, int left, int right) {
    if(left >= right) {
        return;
    }
    int l = left, r = right;
    int m = Arr[left + rand() % (right - left)];
    while(l < r) {
        while(Arr[l] < m) {
            l++;
        }
        while(Arr[r] > m) {
            r--;
        }
        if(l <= r) {
            std::swap(Arr[l], Arr[r]);
            l++;
            r--;
        }
    }
    quick(Arr, left, r);
    quick(Arr, l, right);
}

int main() {

    std::ifstream in("algsort.in");
    std::ofstream out("algsort.out");
    srand(time(NULL));
    int nV, *Arr;
    in >> nV;
    Arr = new int[nV];
    for(int i = 0; i < nV; i++) {
        in >> Arr[i];
    }
    quick(Arr, 0, nV - 1);
    for(int i = 0; i < nV; i++) {
        out << Arr[i] << ' ';
    }
    return 0;
}