Pagini recente » Cod sursa (job #1730848) | Cod sursa (job #2831346) | Cod sursa (job #786584) | Cod sursa (job #111878) | Cod sursa (job #2076376)
#include <algorithm>
#include <fstream>
#include <iostream>
using namespace std;
const int MAX_N = 500005;
int a[MAX_N];
void QuickSort(int left, int right) {
if (left >= right) {
return;
}
swap(a[left], a[left + rand() % (right - left + 1)]);
int i = left, j = right;
while (i < j) {
if (a[i] > a[i + 1] || (a[i] == a[i + 1] && rand() % 2)) {
swap(a[i], a[i + 1]);
++ i;
} else {
swap(a[i + 1], a[j]);
-- j;
}
}
QuickSort(left, i - 1);
QuickSort(i + 1, right);
}
int main() {
ifstream cin("algsort.in");
ofstream cout("algsort.out");
int n;
cin >> n;
for (int i = 1; i <= n; ++ i) {
cin >> a[i];
}
QuickSort(1, n);
for (int i = 1; i <= n; ++ i) {
cout << a[i] << (i == n ? "\n" : " ");
}
return 0;
}