Cod sursa(job #2864866)

Utilizator nurof3nCioc Alex Andrei nurof3n Data 8 martie 2022 11:55:39
Problema Sortare prin comparare Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <fstream>
#include <algorithm>
#include <random>

int N;
int v[500001];

// std::random_device rd;
// std::default_random_engine eng(rd());

int partition(int left, int right) {
    // dont include right element ?
    // std::uniform_int_distribution<int> dist(left, right - 1);
    int pivot = v[left];
    int i = left - 1, j = right + 1;

    while (true) {
        do
            ++i;
        while (v[i] < pivot);

        do
            --j;
        while (v[j] > pivot);

        if (i >= j)
            break;

        std::swap(v[i], v[j]);
    }

    return j;
}

void quicksort(int left, int right) {
    if (left < right) {
        int i = partition(left, right);

        quicksort(left, i);
        quicksort(i + 1, right);
    }
}

int main() {
    std::ifstream in("algsort.in");
    in >> N;
    for (int i = 0; i < N; ++i)
        in >> v[i];

    quicksort(0, N - 1);

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