Pagini recente » Cod sursa (job #3170594) | Cod sursa (job #1358954) | Cod sursa (job #2418290) | Cod sursa (job #2977682) | Cod sursa (job #3128721)
#include<iostream>
#include<vector>
#include<random>
#include<fstream>
std::ifstream fin("numere.in");
std::ofstream fout("numere.out");
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;
}