Pagini recente » Cod sursa (job #551100) | Cod sursa (job #905788) | Cod sursa (job #2543378) | Cod sursa (job #2165960) | Cod sursa (job #2587242)
#include <bits/stdc++.h>
using namespace std;
default_random_engine generator;
uniform_int_distribution <int> distribution (0, 1000000000);
int getRand() {
return distribution(generator);
}
int randomElem(int a, int b) {
return getRand() % (b - a + 1) + a;
}
int v[500005];
int copie[500005];
void quickSort(int left, int right) {
if (left >= right) return;
int pivot = randomElem(left, right);
int start = left;
for (int i = left; i <= right; ++i) {
if (v[i] < v[pivot]) {
copie[start] = v[i];
start += 1;
}
}
int middle = start;
copie[start] = v[pivot];
start += 1;
for (int i = left; i <= right; ++i) {
if (v[i] >= v[pivot] and i != pivot) {
copie[start] = v[i];
start += 1;
}
}
for (int i = left; i <= right; ++i) {
v[i] = copie[i];
}
quickSort(left, middle - 1);
quickSort(middle + 1, right);
}
int main()
{
ifstream fin("algsort.in");
ofstream fout("algsort.out");
ios::sync_with_stdio(false);
fin.tie(nullptr);
fout.tie(nullptr);
int n;
fin >> n;
for (int i = 1; i <= n; ++i) {
fin >> v[i];
}
quickSort(1, n);
for (int i = 1; i <= n; ++i) {
fout << v[i] << ' ';
}
return 0;
}