Cod sursa(job #2906718)

Utilizator utilizator20052022utilizatorr utilizator20052022 Data 27 mai 2022 01:29:45
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

ifstream fin("algsort.in");
ofstream fout("algsort.out");


void quick_sort_random(vector <int> &v, int left, int right)
{
    int l = left, r = right; // i si j
    int pivot_rand = v[rand() % (right - left + 1) + left];

    while( l < r)
    {
        while(v[l] < pivot_rand) l++;
        while(v[r] > pivot_rand) r--;

        if( l <= r)
        {
            swap(v[l++],v[r--]);
        }
    }

    if(r > left)
        quick_sort_random(v, left, r);
    if(l < right)
        quick_sort_random(v, l, right);
}

int main(){
    int N,x;
    
    vector<int> v;

    fin>>N;
    for(int i = 0; i < N; ++i){
        fin>>x;
        v.push_back(x);
    }

    quick_sort_random(v, 0, v.size()-1);
    for(auto nr: v) fout<<nr<<' ';
    return 0;
}