fork download
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <vector>
  4.  
  5. using namespace std;
  6.  
  7. void quick_sort(std::vector<int>::iterator b, std::vector<int>::iterator e)
  8. {
  9. auto distance = e - b;
  10. if (distance < 2)
  11. return;
  12.  
  13. int x = *b;
  14.  
  15. auto p = std::partition(b, e, [x](int y){return y < x;});
  16.  
  17. if (p == b && *p == x)
  18. quick_sort(b + 1, e);
  19. else
  20. {
  21. quick_sort(b, p);
  22. quick_sort(p, e);
  23. }
  24. }
  25.  
  26. std::vector<int> quick_sort(const std::initializer_list<int> &in)
  27. {
  28. std::vector<int> data(in);
  29. quick_sort(data.begin(), data.end());
  30.  
  31. return data;
  32. }
  33.  
  34. int main() {
  35.  
  36. auto res = quick_sort({10, 9, 7, 8, 5, 6, 4, 7, 2, 1});
  37. for (int i : res)
  38. std::cout << i << ' ';
  39.  
  40. std::cout << endl;
  41.  
  42. return 0;
  43. }
Success #stdin #stdout 0s 3428KB
stdin
Standard input is empty
stdout
1 2 4 5 6 7 7 8 9 10