Pagini recente » Cod sursa (job #2803088) | Cod sursa (job #2568900) | Cod sursa (job #454251) | Cod sursa (job #225376) | Cod sursa (job #2666218)
#include<iostream>
#include<fstream>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
int n,v[500000];
inline int random(int l,int r){
int x=rand();
return x%(r-l+1)+l;
}
void read(){
in>>n;
for(int i=0;i<n;i++){
in>>v[i];
}
}
int partition(int*arr,int l,int r){
int k=l-1,m=arr[r];
for(int i=l;i<=r-1;i++){
if(arr[i]<=m){
k++;
swap(arr[k],arr[i]);
}
}
k++;
swap(arr[k],arr[r]);
return k;
}
void sort(int*arr,int l,int r){
if(l>=r){
return;
}
int ran=random(l,r);
swap(v[ran],v[r]);
int piv=partition(arr,l,r);
sort(arr,l,piv-1);
sort(arr,piv+1,r);
}
int main(){
srand(time(NULL));
read();
sort(v,0,n-1);
for(int i=0;i<n;i++)
out<<v[i]<<" ";
return 0;
}