48#include <lal/detail/data_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,
72 std::is_integral_v<T> && is_pointer_iterator_v<T, iterator_t>,
76void bit_sort(iterator_t begin, iterator_t end,
const T& m,
char *
const seen)
80 for (
auto it = begin; it != end; ++it) {
85 std::size_t seenit = 0;
90 iterator_t it = begin;
118 typename T,
typename It,
120 std::is_integral_v<T> && is_pointer_iterator_v<T, It>,
124void bit_sort_mem(It begin, It end,
const std::size_t size,
char *
const seen)
127 if (size <= 1) {
return; }
133 std::sort(begin, end);
152 typename T,
typename It,
154 std::is_integral_v<T> && is_pointer_iterator_v<T, It>,
158void bit_sort(It begin, It end,
const std::size_t size)
noexcept
160 if (size <= 1) {
return; }
166 std::sort(begin, end);
171 const auto [m_it,M_it] = std::minmax_element(begin, end);
172 const auto m = *m_it;
173 const auto M = *M_it;
void insertion_sort(It begin, It end) noexcept
Insertion sort.
Definition: insertion_sort.hpp:58
void bit_sort(iterator_t begin, iterator_t end, const T &m, char *const seen) noexcept
Sorts the elements within range [begin, end)
Definition: bit_sort.hpp:76
void bit_sort_mem(It begin, It end, const std::size_t size, char *const seen) noexcept
Sort integer values increasingly.
Definition: bit_sort.hpp:124
Main namespace of the library.
Definition: basic_types.hpp:50
Wrapper of a C array for autmatic deallocation of memory.
Definition: data_array.hpp:59
T * begin() noexcept
Non-constant raw pointer to first element.
Definition: data_array.hpp:291