Mai intai trebuie sa te autentifici.
Cod sursa(job #2643345)
| Utilizator | Data | 19 august 2020 16:20:23 | |
|---|---|---|---|
| Problema | Sortare prin comparare | Scor | 40 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.75 kb |
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
std::ifstream fin("algsort.in");
std::ofstream fout("algsort.out");
int findPivot(std::vector<int>& v, int st, int dr) {
int p = v[dr], k = st - 1;
for (int i = st; i < dr; ++i) {
if (v[i] < p) {
k++;
std::swap(v[i], v[k]);
}
}
std::swap(v[k + 1], v[dr]);
return k + 1;
}
void quickSort(std::vector<int>& v, int st, int dr) {
if (st < dr) {
int p = findPivot(v, st, dr);
quickSort(v, st, p - 1);
quickSort(v, p + 1, dr);
}
}
int main() {
int n;
fin >> n;
std::vector<int> v(n);
for (int i = 0; i < n; ++i) {
fin >> v[i];
}
quickSort(v, 0, n - 1);
for (int i = 0; i < n; ++i) {
fout << v[i] << ' ';
}
return 0;
}