Cod sursa(job #2911463)

Utilizator AndreiPaval03Andrei Paval AndreiPaval03 Data 29 iunie 2022 18:59:42
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.24 kb
#include <bits/stdc++.h>

using namespace std;

int Partition(vector<int>& v, int p, int q) {
    int i = p - 1;
    int j = q + 1;
    int x = v[p];
    while (true) {
        do {
            i++;
        } while (v[i] < x);
        
        do {
            j--;
        } while (v[j] > x);

        if (i < j) {
            swap(v[i], v[j]);
        } else {
            return j;
        }
    } 

    return j;
}

void QuickSort(vector<int>& v, int p, int q) {
    if (p < q) {
        int i = p;
        int j = q;
        int x = v[(p + q) / 2];
        while (i < j) {
            while(v[i] < x) {
                i++;
            } 
            
            while (v[j] > x) {
                j--;
            } 

            if (i <= j) {
                swap(v[i], v[j]);
                ++i;
                --j;
            } 
        } 
        QuickSort(v, p, j);
        QuickSort(v, i, q);
    }
}

int main() {
    ifstream cin("algsort.in");
    ofstream cout("algsort.out");
    
    int n; cin >> n;
    vector<int> v(n);
    for (int i = 0; i < n; i++)
        cin >> v[i];

    QuickSort(v, 0, n - 1);

    for (int i = 0; i < n; i++)
        cout << v[i] << " ";

    return 0;
}