Cod sursa(job #3341850)

Utilizator pepsiM4A1Ozturk Arif pepsiM4A1 Data 21 februarie 2026 13:05:30
Problema Sortare prin comparare Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.15 kb
#include<bits/stdc++.h>
#include<random>

using namespace std;

int partition(vector<int> &v, int left, int right) {
    int pivot_pos = left + rand() % (right - left + 1);
    swap(v[pivot_pos], v[right]);
    int pivot = v[right];

    int i = left - 1;

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

    swap(v[i + 1], v[right]);
    return i + 1;
}

void QuickSort(vector<int> &v, int left, int right) {
    while (left < right) {

        int p = partition(v, left, right);

        if (p - left < right - p) {
            QuickSort(v, left, p - 1);
            left = p + 1;
        } else {
            QuickSort(v, p + 1, right);
            right = p - 1;
        }
    }
}

int main(){
    freopen("algsort.in", "r", stdin);
    freopen("algsort.out", "w", stdout);


    int n;
    scanf("%d", &n);

    vector<int> v(n + 1, 0);
    for(int i = 1; i <= n; i++){
        scanf("%d", &v[i]);
    }
    srand(2027);

    QuickSort(v, 1, n);

    for(int i = 1; i <= n; i++){
        printf("%d ", v[i]);
    }
    return 0;
}