Pagini recente » Cod sursa (job #2186413) | Cod sursa (job #2899625) | Cod sursa (job #2092085) | Cod sursa (job #1141257) | Cod sursa (job #3124639)
#include <bits/stdc++.h>
#define mod 666013
using namespace std;
int n,v[500005],s[500005],d[500005],ns,nd;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
std::random_device rd;
std::mt19937 gen(rd());
int random(int low, int high)
{
std::uniform_int_distribution<> dist(low, high);
return dist(gen);
}
void quicksort(int st, int dr){
if (st>=dr) return;
ns=0;
nd=0;
int rnd=random(st,dr);
int pivot=v[rnd];
for (int i=st;i<=dr;i++){
if (i==rnd) continue;
if (v[i]<pivot){
ns++;
s[ns]=v[i];
}
else{
nd++;
d[nd]=v[i];
}
}
for (int i=1;i<=ns;i++) v[st+i-1]=s[i];
v[st+ns]=pivot;
for (int i=1;i<=nd;i++) v[st+ns+i]=d[i];
quicksort(st,st+ns-1);
quicksort(st+ns+1,dr);
}
int main(){
fin>>n;
for (int i=1;i<=n;i++) fin>>v[i];
quicksort(1,n);
for (int i=1;i<=n;i++) fout<<v[i]<<" ";
}