Pagini recente » Cod sursa (job #1047442) | Cod sursa (job #2641341) | Cod sursa (job #3252283) | Cod sursa (job #2612084) | Cod sursa (job #2783766)
#include <bits/stdc++.h>
using namespace std;
const string FILENAME = "algsort";
ifstream fin(FILENAME + ".in");
ofstream fout(FILENAME + ".out");
vector < int > v;
int Partition(int lo, int hi) {
int idx = rand() % (hi - lo + 1) + lo;
swap(v[idx], v[hi]);
int i = lo;
for (int j = lo; j < hi; ++j) {
if (v[j] <= v[hi]) {
swap(v[i], v[j]);
++i;
}
}
swap(v[i], v[hi]);
return i;
}
void QSort(int lo, int hi) {
if (lo >= hi) return;
int part = Partition(lo, hi);
QSort(lo, part - 1);
QSort(part + 1, hi);
}
int main() {
srand(time(NULL));
int n; fin >> n;
v.resize(n);
for (int i = 0; i < n; ++i) {
fin >> v[i];
}
QSort(0, n - 1);
for (int i = 0; i < n; ++i) {
fout << v[i] << " ";
}
return 0;
}