Cod sursa(job #3202430)

Utilizator NToniBoSSNicolae Tonitza NToniBoSS Data 11 februarie 2024 16:05:01
Problema Sortare prin comparare Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <bits/stdc++.h>
using namespace std;

int v[500001];

int partition(int st, int dr){
    int i = st - 1, j = st;
    for(; j < dr; j++){
        if(v[j] <= v[dr]){
            i++;
            swap(v[i], v[j]);
        }
    }
    swap(v[i + 1], v[dr]);
    return i + 1;
}

void quickSort(int st, int dr){
    if(st >= dr)
        return ;
    int pos = rand() % (dr - st + 1) + st;
    swap(v[dr], v[pos]);
    int piv = partition(st, dr);
    quickSort(st, piv - 1);
    quickSort(piv + 1, dr);
}

int main() {
    int n;
    freopen("algsort.in", "r", stdin);
    freopen("algsort.out", "w", stdout);
    srand(time(NULL));
    scanf("%d", &n);
    for(int i = 1; i <= n; i++){
        scanf("%d", &v[i]);
    }
    quickSort(1, n);
    for(int i = 1; i <= n; i++)
        printf("%d ",v[i]);

    return 0;
}