Cod sursa(job #2618776)

Utilizator ADINAIOANA-BORTAAdina Borta ADINAIOANA-BORTA Data 25 mai 2020 23:30:22
Problema Sortare prin comparare Scor 40
Compilator cpp-32 Status done
Runda Arhiva educationala Marime 1.24 kb
#include <iostream>
#include <vector>
#include <fstream>
int Partition(std::vector<long long>& v, int st, int dr)
{
    long long pivot = v[dr], t;
    int i = st, j = dr;
    while (i != j)
    {
        if (pivot == v[j])
        {
            if (v[i] > pivot)
            {
                t = v[i];
                v[i] = v[j];
                v[j] = t;
                j--;
            }
            else
                i++;
        }
        else
            if (v[j] < pivot)
            {
                t = v[i];
                v[i] = v[j];
                v[j] = t;
                i++;
            }
            else
                j--;
    }

    return i;

}
void QuickSort(std::vector<long long>& v, int st, int dr)
{
    if (st < dr)
    {
        int pi = Partition(v, st, dr);
        QuickSort(v, st, pi - 1);
        QuickSort(v, pi + 1, dr);
    }
}


int main()
{
    int n, x;
    std::vector<long long> sir;
    std::ifstream in("algsort.in");
    std::ofstream out("algsort.out");

    in >> n;

    for (int i = 0; i < n; i++) {
        in >> x;
        sir.push_back(x);
    }
    QuickSort(sir, 0, n-1);

    for (int i = 0; i < n; i++) {
        out << sir[i]<<" ";
    }
}