Pagini recente » Cod sursa (job #2621986) | Cod sursa (job #2916718) | Cod sursa (job #851548) | Cod sursa (job #1799664) | Cod sursa (job #3206220)
#include <iostream>
using namespace std;
const int MAX_N = 500005;
int n;
int v[MAX_N];
int Partition(int v[], int lf, int rg, int pivotVal) {
int lowerPos = lf - 1;
for (int i = lf; i < rg; i++) {
if (v[i] < pivotVal) {
lowerPos++;
swap(v[lowerPos], v[i]);
}
}
lowerPos++;
swap(v[lowerPos], v[rg]);
return lowerPos;
}
void QSort(int v[], int lf, int rg) {
if (lf >= rg) {
return;
}
int pivotIdx = (lf + rand()) % (rg - lf + 1);
int pivotVal = v[pivotIdx];
swap(v[pivotIdx], v[rg]);
int partPos = Partition(v, lf, rg, pivotVal);
QSort(v, lf, partPos - 1);
QSort(v, partPos + 1, rg);
}
int main() {
cin >> n;
// indexed from 1
for (int i = 1; i <= n; i++) {
cin >> v[i];
}
QSort(v, 1, n);
for (int i = 1; i <= n; i++) {
cout << v[i] << ' ';
}
cout << '\n';
}