Pagini recente » Cod sursa (job #1049009) | Cod sursa (job #2758883) | Cod sursa (job #117961) | Cod sursa (job #2351857) | Cod sursa (job #2077537)
#include <fstream>
#include <iostream>
#include <stdlib.h>
#include <time.h>
int n, A[500100];
int part(int st, int dr){
int pivot = A[st + (rand() % (dr - st + 1))];
int idx_min = st, idx_max = dr;
while (1){
while(A[idx_min] < pivot) idx_min++;
while(A[idx_max] > pivot) idx_max--;
if (idx_min >= idx_max) return idx_min;
std::swap(A[idx_min++], A[idx_max--]);
}
}
void quickSort(int st, int dr){
if (st < dr){
int mid = part(st, dr);
quickSort(st, mid - 1);
quickSort(mid, dr);
}
}
int main(){
srand(time(0));
freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
scanf("%d", &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;
}