Cod sursa(job #971311)

Utilizator prisonbreakMichael Scofield prisonbreak Data 8 iulie 2013 21:45:53
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <fstream>
#include <ctime>
#include <cstdlib>
void swap(int &a, int &b)
{
    int temp = a;
    a = b;
    b = temp;
}
void quiksort(int *nArr, int left, int right)
{
    int l = left, r = right;
    int pivot = nArr[l + rand() % (right - l)];
    while(l < r)
    {
        while(nArr[l] < pivot)
            l++;
        while(nArr[r] > pivot)
            r--;
        if(l <= r)
        {
            swap(nArr[l], nArr[r]);
            l++;
            r--;
        }
    }
    if(left < r) quiksort(nArr, left, r);
    if(right > l) quiksort(nArr, l, right);
}
 
int main(void)
{   
    srand(time(NULL));
    std::ofstream out("algsort.out");
    std::ifstream in("algsort.in");
    int nV, *nArr;
    in >> nV;
    nArr = new int[nV];
    for(int i(0); i < nV; i++)
        in >> nArr[i];
    quiksort(nArr, 0, nV - 1);
    for(int i(0); i < nV; i++)
        out << nArr[i] << ' ';
    return 0;
}