Cod sursa(job #2652778)

Utilizator mvcl3Marian Iacob mvcl3 Data 25 septembrie 2020 18:01:57
Problema Sortare prin comparare Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>
#include <vector>


int partition(std::vector<int>& v, int left, int right)
{
    int& pivot = v[right];
    int i = left - 1;

    for(int j = left; j <= right - 1; ++j)
    {
        if(v[j] < pivot)
        {
            ++i;
            std::swap(v[i], v[j]);
        }
    }

    std::swap(v[i + 1], pivot);
    return i + 1;
}


void quickSort(std::vector<int>& v, int left, int right)
{
    if(left < right)
    {
        int i = partition(v, left, right);

        quickSort(v, left, i - 1);
        quickSort(v, i + 1, right);
    }
}

int main()
{
    std::ifstream in("algsort.in");
    int n;
    std::vector<int> v;

    in >> n;
    v.resize(n);
    for(int i = 0; i < n; ++i)
    {
        in >> v[i];
    }

    quickSort(v, 0, n - 1);

    std::ofstream out("algsort.out");
    for(int i = 0; i < n; ++i)
    {
        out << v[i] << ' ';
    }

    return 0;
}