48#include <lal/detail/array.hpp>
49#include <lal/detail/sorting/insertion_sort.hpp>
50#include <lal/detail/type_traits/is_pointer_iterator.hpp>
70 typename T,
typename iterator_t,
78 const iterator_t begin,
86 for (
auto it = begin; it != end; ++it) {
91 std::size_t seenit = 0;
96 iterator_t it = begin;
124 typename T,
typename It,
134 const std::size_t size,
139 if (size <= 1) {
return; }
145 std::sort(begin, end);
164 typename T,
typename It,
174 const std::size_t size
178 if (size <= 1) {
return; }
184 std::sort(begin, end);
189 const auto [m_it,M_it] = std::minmax_element(begin, end);
190 const auto m = *m_it;
191 const auto M = *M_it;
void insertion_sort(const It begin, const It end) noexcept
Insertion sort.
Definition insertion_sort.hpp:58
void bit_sort(const iterator_t begin, const iterator_t end, const T &m, char *const seen) noexcept
Sorts the elements within range [begin, end)
Definition bit_sort.hpp:77
void bit_sort_mem(const It begin, const It end, const std::size_t size, char *const seen) noexcept
Sort integer values increasingly.
Definition bit_sort.hpp:131
constexpr bool is_pointer_iterator_v
Shorthand for is_pointer_iterator.
Definition is_pointer_iterator.hpp:68
Main namespace of the library.
Definition basic_types.hpp:48
Wrapper of a C array for automatic deallocation of memory.
Definition array.hpp:59
T * begin() noexcept
Non-constant raw pointer to first element.
Definition array.hpp:300