Pagini recente » Cod sursa (job #2147646) | Cod sursa (job #325099) | Cod sursa (job #2894043) | Cod sursa (job #175640) | Cod sursa (job #960879)
Cod sursa(job #960879)
#include <fstream>
#include <iostream>
#include <vector>
#include <random>
using namespace std;
int n,x;
vector<int> a;
int choosePivot(int from,int to){
int r= rand()%(to-from+1)+from;
int aux;
aux=a[r];a[r]=a[from];a[from]=aux;
int pivot=a[from];int pos=from;
for(int i=from+1;i<=to;i++){
if(a[i]<pivot){
aux=a[i];
a[i]=a[pos+1];
a[pos+1]=aux;
aux=a[pos+1];
a[pos+1]=a[pos];
a[pos]=aux;
pos++;
}
}
return pos;
}
void quickSort(int from,int to){
if(from>=to) return;
int pivot = choosePivot(from,to);
quickSort(from,pivot-1);
quickSort(pivot+1,to);
}
int main(){
ifstream in("algsort.in");
ofstream out("algsort.out");
in>>n;
for(int i=0;i<n;i++){in>>x;a.push_back(x);}
quickSort(0,a.size()-1);
for(int i=0;i<a.size();i++){
out<<a[i]<<" ";
}
return 0;
}