Advertisement
Derga

Untitled

Aug 24th, 2020
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.31 KB | None | 0 0
  1. //#include <algorithm>
  2. #include <iostream>
  3. #include <vector>
  4.  
  5. using namespace std;
  6.  
  7. auto Speedup = []()
  8. {
  9.     std::ios::sync_with_stdio(false);
  10.     std::cin.tie(nullptr);
  11.     std::cout.tie(nullptr);
  12.     return 0;
  13. }();
  14.  
  15.  
  16. int partition(vector <short>& v, short l, short r) {
  17.     short val = v[(l + r) / 2];
  18.  
  19.     while (l <= r) {
  20.         while (v[l] < val) {
  21.             ++l;
  22.         }
  23.         while (v[r] > val) {
  24.             --r;
  25.         }
  26.  
  27.         if (l >= r) {
  28.             break;
  29.         }
  30.         swap(v[l++], v[r--]);
  31.     }
  32.     return r;
  33. }
  34.  
  35. void q_sort(vector<short>& v, short l, short r) {
  36.     if (l < r) {
  37.         int max = (v[l] < v[r] ? r : l);
  38.         int min = (v[l] > v[r] ? l : r);
  39.         int mid = (v[(l + r) / 2] > v[max] ? max : (l + r) / 2);
  40.         mid = (v[(l + r) / 2] < v[min] ? min : (l + r) / 2);
  41.         swap(v[mid], v[(l + r) / 2]);
  42.         //swap(v[(l + r) / 2], v[(l + rand() % (r - l))]);
  43.  
  44.         int q = partition(v, l, r);
  45.         q_sort(v, 0, q);
  46.         q_sort(v, q + 1, r);
  47.     }
  48. }
  49.  
  50. int main() {
  51.     int n;
  52.     cin >> n;
  53.  
  54.     vector <short> v(n);
  55.     for (auto& elem : v) {
  56.         cin >> elem;
  57.     }
  58.  
  59.     q_sort(v, 0, v.size() - 1);
  60.     //sort(v.begin(), v.end());
  61.  
  62.     for (auto& elem : v) {
  63.         cout << elem << ' ';
  64.     }
  65.  
  66.     return 0;
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement