Cod sursa(job #2080872)

Utilizator xkz01X.K.Z. xkz01 Data 3 decembrie 2017 16:38:26
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
///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;
}