Pagini recente » Cod sursa (job #1631883) | Cod sursa (job #2257308) | Cod sursa (job #737756) | Cod sursa (job #1743276) | Cod sursa (job #3206222)
#include <fstream>
using namespace std;
ifstream fin ("algsort.in");
ofstream fout ("algsort.out");
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() {
fin >> n;
// indexed from 1
for (int i = 1; i <= n; i++) {
fin >> v[i];
}
QSort(v, 1, n);
for (int i = 1; i <= n; i++) {
fout << v[i] << ' ';
}
fout << '\n';
}