Cod sursa(job #1080246)

Utilizator cosmo0093Raduta Cosmin cosmo0093 Data 12 ianuarie 2014 14:47:03
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <fstream>
#include <ctime>
#include <cstdlib>

void quick(int *Arr, int left, int right);

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

    for(int i = 0; i < nV; i++) {
        out << Arr[i] << ' ';
    }
    return 0;
}

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