Pagini recente » Cod sursa (job #101991) | Cod sursa (job #417247) | Cod sursa (job #1141718) | Cod sursa (job #1767804) | Cod sursa (job #1350424)
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <ctime>
using namespace std;
int N,a[500010];
void swp(int &x, int &y){
int aux=x;
x=y;
y=aux;
}
void qsort(int l, int r){
if (l>=r) return;
int i,c=l,ind,c2;
ind=(l+(rand()%(r-l+1)));
swp(a[ind],a[r]);
for (i=l; i<r; i++)
if (a[i]<a[r]){
swp(a[i],a[c]);
c++;
}
c2=c;
for (i=c; i<r; i++)
if (a[i]==a[r]){
swp(a[i],a[c2]);
c2++;
}
swp(a[r],a[c2]);
qsort(l,c-1);
qsort(c2+1,r);
}
int main(){
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
scanf("%d",&N);
srand(time(NULL));
int i;
for (i=1; i<=N; i++) scanf("%d",&a[i]);
qsort(1,N);
for (i=1; i<=N; i++) printf("%d ",a[i]);
return 0;
}