Pagini recente » Cod sursa (job #611738) | Cod sursa (job #2822721) | Cod sursa (job #2760099) | Cod sursa (job #2959573) | Cod sursa (job #2542466)
#include <iostream>
#include <fstream>
#include <random>
#include <ctime>
using namespace std;
ifstream fin ("algsort.in");
ofstream fout("algsort.out");
int n,v[500010],ran,aux,pv;
int poz(int st,int dr){
int i=st,j=dr,i2=0,j2=-1;
while(i!=j){
if(v[i]>v[j]){
swap(v[i],v[j]);
aux=i2;
i2=-j2;
j2=-aux;
}
i+=i2;
j+=j2;
}
return i;
}
void quicksort(int st,int dr){
if(st<dr){
pv=poz(st,dr);
quicksort(st,pv-1);
quicksort(pv+1,dr);
}
}
int main() {
fin>>n;
srand(time(0));
for(int i=1;i<=n;i++)
fin>>v[i];
for(int i=n;i>=3;i--) {
ran=1+rand()%(i-1);
swap(v[i],v[ran]);
}
quicksort(1,n);
for(int i=1;i<=n;i++)
fout<<v[i]<<" ";
}