Cod sursa(job #2848948)

Utilizator starduststardust stardust Data 14 februarie 2022 11:46:14
Problema Sortare prin comparare Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <fstream>
#include <vector>

using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");

vector<int> v;
int n;

int pivot(int left, int right)
{

    int p = left + (rand() % (right - left + 1));
    int val = v[p];
    swap(v[p], v[right]);
    int finalPosition = left - 1;
    for (int i = left; i < right; i++)
    {
        if (v[i] <= val)
        {
            finalPosition++;
            swap(v[finalPosition], v[i]);
        }
    }
    swap(v[finalPosition + 1], v[right]);
    return finalPosition + 1;
}
void quicksort(int left, int right)
{
    if (left >= right)
        return;

    int p = pivot(left, right);
    quicksort(left, p - 1);
    quicksort(p + 1, right);
}
int main()
{
    in >> n;
    int x;
    for (int i = 0; i < n; i++)
    {
        in >> x;
        v.push_back(x);
    }
    quicksort(0, n - 1);
    for (int i = 0; i < n; i++)
    {
        out << v[i] << " ";
    }
}

// 1 4 2 3 1 9
//