Sorting algorithms/Bogosort: Difference between revisions

Content added Content deleted
Line 309: Line 309:
#include <random>
#include <random>


template<typename RandomAccessIterator>
template <typename RandomAccessIterator, typename Predicate>
void bogo_sort(RandomAccessIterator begin, RandomAccessIterator end) {
void bogo_sort(RandomAccessIterator begin, RandomAccessIterator end,
Predicate p) {
std::random_device rd;
std::random_device rd;
std::mt19937 generator(rd());
std::mt19937 generator(rd());
while (!std::is_sorted(begin, end)) {
while (!std::is_sorted(begin, end, p)) {
std::shuffle(begin, end, generator);
std::shuffle(begin, end, generator);
}
}
}

template <typename RandomAccessIterator>
void bogo_sort(RandomAccessIterator begin, RandomAccessIterator end) {
bogo_sort(
begin, end,
std::less<
typename std::iterator_traits<RandomAccessIterator>::value_type>());
}
}