Cod sursa(job #3201328)

Utilizator UengineDavid Enachescu Uengine Data 7 februarie 2024 16:44:14
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.68 kb
#include <iostream>

using namespace std;

const int VMAX = 100001;
int v[VMAX];

int partitionare(int v[], int st, int dr){
    int pp = (rand() & (dr - st )) + st;
    swap(v[pp], v[dr]);
    int p = st;
    for(int i = st; i < dr; i++){
        if(v[i] <= v[dr])
            swap(v[p++], v[i]);
    }
    swap(v[p], v[dr]);
    return p;
}

void qs(int v[], int st, int dr){
    if(st >= dr)
        return;
    int p = partitionare(v, st, dr);
    qs(v, st, p - 1);
    qs(v, p + 1, dr);
}

int main()
{
    int n;
    cin >> n;
    for(int i = 0; i < n; i++){
        cin >> v[i];
    }
    qs(v, 0, n - 1);
    for(int i = 0; i < n; i++){
        cout << v[i]<< ' ';
    }
    return 0;
}