Pagini recente » Cod sursa (job #727239) | Cod sursa (job #2554650) | Cod sursa (job #2178250) | Cod sursa (job #2033415) | Cod sursa (job #394515)
Cod sursa(job #394515)
#include<iostream>
#include<cstdlib>
#include<algorithm>
using namespace std;
int a[500009];
void swap(int& a, int& b){
int aux;
aux=a;a=b;b=aux;
}
int partitie(int st, int dr){
int p, pos, k, i;
srand(time(NULL));
p=((rand()%(dr-st+1))+st);
k=a[p]; pos=st;
swap(a[pos], a[p]);
for(i=st+1;i<=dr;i++)
if(a[i]<=k)
swap(a[++pos],a[i]);
swap(a[pos],a[st]);
return pos;
}
void quisort(int st, int dr, int l){
if(l<16&&dr-st>10){
int m=partitie(st, dr);
quisort(st, m-1,l+1);
quisort(m+1, dr,l+1);
}
else sort(a+st, a+dr+1);
}
int main(){
int n, i;
freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
cin>>n;
for(i=0;i<n;i++)
cin>>a[i];
quisort(0, n-1,0);
for(i=0;i<n;i++)
cout<<a[i]<<' ';
cout<<'\n';
return 0;
}