Pagini recente » Cod sursa (job #2444795) | Cod sursa (job #2175216) | Cod sursa (job #2941445) | Cod sursa (job #1408178) | Cod sursa (job #1000446)
#include <iostream>
#include <vector>
#include <time.h>
#include <stdlib.h>
using namespace std;
int pivot(vector<int>* a,int lo,int hi) {
int i=lo+1,j=hi;
while(true){
while((*a)[i]<=(*a)[lo]) {
i++;
if(i>=hi) break;
}
while((*a)[lo]<=(*a)[j]){
j--;
if(j<=lo) break;
}
if(j<=i) break;
int aux = (*a)[i];(*a)[i]=(*a)[j];(*a)[j]=aux;
}
int aux = (*a)[j];(*a)[j]=(*a)[lo];(*a)[lo]=aux;
return j;
}
void sort(vector<int>* a,int lo,int hi) {
if(hi<=lo) return;
int k = pivot(a,lo,hi);
sort(a,lo,k-1);
sort(a,k+1,hi);
}
int main(){
int n;
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
cin>>n;
vector<int> a(n);
for(int i=0;i<n;i++){
cin>>a[i];
}
srand(time(NULL));
for(int i=0;i<n;i++){
int j = rand() % (i+1);
int aux = a[i];a[i]=a[j];a[j] = aux;
}
sort(&a,0,n-1);
for(int i=0;i<a.size();i++)
cout<<a[i]<<" ";
return 0;
}