Pagini recente » Cod sursa (job #2432680) | Cod sursa (job #2720723) | Cod sursa (job #2680927) | Cod sursa (job #2244695) | Cod sursa (job #312442)
Cod sursa(job #312442)
#include <fstream>
#include <ctime>
#include <cstdlib>
#include <algorithm>
using namespace std;
int v[500100];
int partitie(int a, int b) {
int pivot = v[a];
int left = a + 1, right = b;
while (1) {
while (left < b && v[left] <= pivot) ++left;
while (right > a && v[right] >= pivot) --right;
if (left < right) swap(v[left], v[right]);
else break;
}
swap(v[a], v[right]);
return right;
}
void qsort(int a, int b) {
if (a >= b) return; //done
int pivot = partitie(a, b);
qsort(a, pivot - 1);
qsort(pivot + 1, b);
}
int main() {
freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
int n;
scanf("%d", &n);
for (int i = 0; i < n; ++i) scanf("%d", &v[i]);
random_shuffle(v, v+n);
qsort(0, n-1);
for (int i = 0; i < n; ++i) printf("%d ", v[i]);
printf("\n");
return 0;
};