Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iterator>
- #include <algorithm> // for std::partition
- #include <functional> // for std::less
- template<typename RandomAccessIterator,
- typename Order>
- void quicksort(RandomAccessIterator first, RandomAccessIterator last, Order order)
- {
- if (last - first > 1)
- {
- RandomAccessIterator split = std::partition(first+1, last, std::bind2nd(order, *first));
- std::iter_swap(first, split-1);
- quicksort(first, split-1, order);
- quicksort(split, last, order);
- }
- }
- template<typename RandomAccessIterator>
- void quicksort(RandomAccessIterator first, RandomAccessIterator last)
- {
- quicksort(first, last, std::less<typename std::iterator_traits<RandomAccessIterator>::value_type>());
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement