Guest User

Untitled

a guest
Apr 23rd, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.98 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4.  
  5. using namespace std;
  6.  
  7. vector<int> quick_sort(vector<int> list)
  8. {
  9. if (list.empty())
  10. return vector<int>();
  11.  
  12. int head = list[0];
  13. vector<int> smaller;
  14. vector<int> larger;
  15.  
  16. // filter
  17. copy_if (list.begin()+1, list.end(), back_inserter(smaller), [head](int i) {return i <= head;});
  18. copy_if (list.begin()+1, list.end(), back_inserter(larger), [head](int i) {return i > head;});
  19.  
  20. //recursion
  21. auto sorted_smaller = quick_sort(smaller);
  22. auto sorted_larger = quick_sort(larger);
  23.  
  24. //join vectors
  25. vector<int> ret;
  26. ret.insert(ret.end(), sorted_smaller.begin(), sorted_smaller.end());
  27. ret.push_back(head);
  28. ret.insert(ret.end(), sorted_larger.begin(), sorted_larger.end());
  29.  
  30. return ret;
  31. }
  32.  
  33.  
  34. int main() {
  35. cout << "Quick sort!\n";
  36.  
  37. vector<int> foo = {25,30,15,5,-5,-15,39};
  38. vector<int> bar=vector<int>();
  39.  
  40. foo = quick_sort(foo);
  41.  
  42. for(int v: foo)
  43. cout << v << ", ";
  44.  
  45. }
Add Comment
Please, Sign In to add comment