Pagini recente » Cod sursa (job #3279707) | Cod sursa (job #905888) | Cod sursa (job #1980903) | Cod sursa (job #779471) | Cod sursa (job #2871400)
#include <fstream>
#include <vector>
using namespace std;
int Partition(vector<int>& vec, int left, int right) {
auto mid = left + (right - left) / 2;
swap(vec[left], vec[mid]);
auto i = left + 1;
auto j = right;
while (i <= j) {
while (i <= j && vec[i] <= vec[left]) {
i += 1;
}
while (i <= j && vec[j] > vec[left]) {
j -= 1;
}
if (i <= j) {
swap(vec[i], vec[j]);
i += 1;
j -= 1;
}
}
swap(vec[left], vec[i - 1]);
return i - 1;
}
void QuickSort(vector<int>& vec, int left, int right) {
if (left >= right) {
return;
}
auto mid = Partition(vec, left, right);
QuickSort(vec, left, mid - 1);
QuickSort(vec, mid + 1, right);
}
int main() {
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n;
fin >> n;
vector<int> vec(n);
for (auto& num : vec) {
fin >> num;
}
QuickSort(vec, 0, vec.size() - 1);
for (const auto& num : vec) {
fout << num << " ";
}
fout << "\n";
return 0;
}