Pagini recente » Cod sursa (job #422540) | Cod sursa (job #1774427) | Cod sursa (job #1230661) | Cod sursa (job #1153532) | Cod sursa (job #797465)
Cod sursa(job #797465)
#include <cstdio>
#define SWAP(a, b) aux=a, a=b, b=aux
int N;
int v[500010];
int part(int left, int right, int pivot) {
int pvalue = v[pivot], final = left, aux;
SWAP(v[pivot], v[right]);
for (int i=left; i<right; ++i)
if (v[i]<pvalue) {
SWAP(v[i],v[final]);
++final;
}
SWAP(v[final], v[right]);
return final;
}
void quicksort(int left, int right) {
if(left<right) {
int pivot;
pivot = left + (right-left)/2;
pivot = part(left, right, pivot);
quicksort(left, pivot-1);
quicksort(pivot+1, right);
}
}
int main () {
freopen("algsort.in","rt",stdin);
freopen("algsort.out","wt",stdout);
scanf("%d", &N);
for (int i=0; i<N; ++i)
scanf("%d", &v[i]);
quicksort(0,N-1);
for (int i=0; i<N; ++i)
printf("%d ", v[i]);
return 0;
}