Cod sursa(job #3128720)

Utilizator Gabroveanu_RazvanGabroveanu Razvan Gabroveanu_Razvan Data 10 mai 2023 16:56:45
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include<iostream>
#include<vector>
#include<random>
#include<fstream>
std::ifstream fin("numere.in");
std::ofstream fout("numere.out");a
int partition(int *v,int p,int u);
void quick_sort(int *v,int p,int u)
{
    if(p<u)
    {
        int q=partition(v,p,u);
        quick_sort(v,p,q-1);
        quick_sort(v,q+1,u);
    }
}
int partition(int *v,int p,int u)
{
    std::random_device rd;
    std::mt19937 generate(rd());
    std::uniform_int_distribution<> rand_index(p,u);
    int j;
    int q=rand_index(generate);
    std::swap(v[q],v[u]);
    int x=v[u];
    int i=p-1;
    for(j=p;j<u;j++)
        if(v[j]<=x)
        {
            i++;
            std::swap(v[i],v[j]);
        }
    std::swap(v[u],v[i+1]);
    return i+1;
}
int main()
{   int x,index=0;
    int *v=new int[500000];
    while(fin>>x)
    {
        v[index]=x;
        index++;
    }
    quick_sort(v,0,index-1);
    for(int i=0;i<index;i++)
        fout<<v[i]<<" ";
    delete[] v;
    return 0;
}