Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //#include <algorithm>
- #include <iostream>
- #include <vector>
- using namespace std;
- auto Speedup = []()
- {
- std::ios::sync_with_stdio(false);
- std::cin.tie(nullptr);
- std::cout.tie(nullptr);
- return 0;
- }();
- int partition(vector <short>& v, short l, short r) {
- short val = v[(l + r) / 2];
- while (l <= r) {
- while (v[l] < val) {
- ++l;
- }
- while (v[r] > val) {
- --r;
- }
- if (l >= r) {
- break;
- }
- swap(v[l++], v[r--]);
- }
- return r;
- }
- void q_sort(vector<short>& v, short l, short r) {
- if (l < r) {
- int max = (v[l] < v[r] ? r : l);
- int min = (v[l] > v[r] ? l : r);
- int mid = (v[(l + r) / 2] > v[max] ? max : (l + r) / 2);
- mid = (v[(l + r) / 2] < v[min] ? min : (l + r) / 2);
- swap(v[mid], v[(l + r) / 2]);
- //swap(v[(l + r) / 2], v[(l + rand() % (r - l))]);
- int q = partition(v, l, r);
- q_sort(v, 0, q);
- q_sort(v, q + 1, r);
- }
- }
- int main() {
- int n;
- cin >> n;
- vector <short> v(n);
- for (auto& elem : v) {
- cin >> elem;
- }
- q_sort(v, 0, v.size() - 1);
- //sort(v.begin(), v.end());
- for (auto& elem : v) {
- cout << elem << ' ';
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement