Pagini recente » Cod sursa (job #2518580) | Cod sursa (job #2317244) | Cod sursa (job #488917) | Cod sursa (job #2752932) | Cod sursa (job #2080872)
///QUICKSORT
#include<cstdio>
#include<cstdlib>
#include<algorithm>
using namespace std;
int a[500002], n;
int partyyy(int st, int dr){
int pivot=a[st+rand()%(dr-st+1)], i=st-1, j=dr+1;
while(true){
do ++i; while (a[i]<pivot);
do --j; while (a[j]>pivot);
if (i>=j) return j;
swap(a[i],a[j]);
}
}
void quicksort(int st, int dr){
int p;
if (st<dr) {
p=partyyy(st, dr);
quicksort(st, p);
quicksort(p+1, dr);
}
}
int main(){
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
scanf("%d\n", &n);
for (int i=1;i<=n;i++) scanf("%d", &a[i]);
quicksort(1,n);
for (int i=1;i<=n;i++) printf("%d ", a[i]);
return 0;
}