Advertisement
Guest User

Untitled

a guest
Nov 17th, 2019
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.71 KB | None | 0 0
  1. #include <iterator>
  2. #include <algorithm> // for std::partition
  3. #include <functional> // for std::less
  4.  
  5. template<typename RandomAccessIterator,
  6. typename Order>
  7. void quicksort(RandomAccessIterator first, RandomAccessIterator last, Order order)
  8. {
  9. if (last - first > 1)
  10. {
  11. RandomAccessIterator split = std::partition(first+1, last, std::bind2nd(order, *first));
  12. std::iter_swap(first, split-1);
  13. quicksort(first, split-1, order);
  14. quicksort(split, last, order);
  15. }
  16. }
  17.  
  18. template<typename RandomAccessIterator>
  19. void quicksort(RandomAccessIterator first, RandomAccessIterator last)
  20. {
  21. quicksort(first, last, std::less<typename std::iterator_traits<RandomAccessIterator>::value_type>());
  22. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement