Pagini recente » Cod sursa (job #1586085) | Cod sursa (job #689664) | Cod sursa (job #903487) | Cod sursa (job #1981302) | Cod sursa (job #828743)
Cod sursa(job #828743)
#include <fstream>
#include <cstdlib>
#include <ctime>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
const int N=550000;
int n,v[N];
int generateRand(int left,int right){
int r1=left+rand()%(right-left+1),r2=left+rand()%(right-left+1),r3=left+rand()%(right-left+1);
if(r1<=r2 && r3<=r2){
return r2;
}
if(r1<=r3 && r2<=r3){
return r3;
}
return r1;
}
void quickSort(int *v,int left,int right){
if(left>=right)
return;
int randpoz=generateRand(left,right);
swap(v[randpoz],v[left]);
int i,j,pivot;
for(pivot=v[left],i=left+1,j=right;i<j;){
if(v[i]>=pivot){
swap(v[i],v[j]);
--j;
continue;
}
++i;
}
if(v[i]>pivot){
--i;
}
swap(v[left],v[i]);
quickSort(v,left,i-1);
quickSort(v,i+1,right);
}
int main(){
int i;
in>>n;
for(i=1;i<=n;++i){
in>>v[i];
}
srand(time(NULL));
quickSort(v,1,n);
for(i=1;i<=n;++i){
out<<v[i]<<" ";
}
}