Pagini recente » Cod sursa (job #1027565) | Cod sursa (job #696982) | Cod sursa (job #25225) | Cod sursa (job #2128599) | Cod sursa (job #2587237)
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 10000005;
int getRand() {
return abs((rand() << 15) + rand());
}
int randomElem(int a, int b) {
return getRand() % (b - a + 1) + a;
}
int v[100005];
int copie[100005];
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");
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;
}