Mai intai trebuie sa te autentifici.
Cod sursa(job #2783766)
| Utilizator | Data | 15 octombrie 2021 02:16:56 | |
|---|---|---|---|
| Problema | Sortare prin comparare | Scor | 60 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.83 kb |
#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;
}