48#include <lal/internal/data_array.hpp>
49#include <lal/internal/sorting/insertion_sort.hpp>
50#include <lal/internal/macros.hpp>
69 typename T,
typename It,
71 std::is_integral_v<T> && is_pointer_iterator_v<T, It>,
75void __bit_sort(It begin, It end,
const T& m,
char *
const seen) {
77 for (
auto it = begin; it != end; ++it) {
116 typename T,
typename It,
118 std::is_integral_v<T> && is_pointer_iterator_v<T, It>,
122void bit_sort_mem(It begin, It end,
const size_t size,
char *
const seen)
124 if (size <= 1) {
return; }
126 insertion_sort(begin, end);
130 std::sort(begin, end);
135 __lal::__bit_sort(begin,end,
static_cast<T
>(0), seen);
149 typename T,
typename It,
151 std::is_integral_v<T> && is_pointer_iterator_v<T, It>,
155void bit_sort(It begin, It end,
const size_t size)
157 if (size <= 1) {
return; }
159 insertion_sort(begin, end);
163 std::sort(begin, end);
168 const auto [m_it,M_it] = std::minmax_element(begin, end);
169 const auto m = *m_it;
170 const auto M = *M_it;
173 data_array<char> seen(M - m + 1, 0);
176 __lal::__bit_sort(begin,end, m, seen.data);
Main namespace of the library.
Definition definitions.hpp:48