MayaFlux 0.3.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ execute()

template<std::random_access_iterator Iterator, typename Comparator >
void MayaFlux::Kinesis::Discrete::execute ( Iterator  begin,
Iterator  end,
Comparator  comp,
SortingAlgorithm  algorithm 
)

Execute a sorting algorithm on an iterator range.

Unimplemented algorithm variants fall back to STANDARD.

Template Parameters
IteratorRandom access iterator
ComparatorBinary predicate
Parameters
beginStart of range
endEnd of range
compComparator
algorithmAlgorithm to use

Definition at line 128 of file Sort.hpp.

129{
130 switch (algorithm) {
131 case SortingAlgorithm::STABLE:
132 std::ranges::stable_sort(begin, end, comp);
133 return;
134
135 case SortingAlgorithm::PARTIAL: {
136 const auto dist = std::distance(begin, end);
137 if (dist > 1)
138 std::partial_sort(begin, begin + dist / 2, end, comp);
139 return;
140 }
141
142 case SortingAlgorithm::NTH_ELEMENT: {
143 const auto dist = std::distance(begin, end);
144 if (dist > 1)
145 std::nth_element(begin, begin + dist / 2, end, comp);
146 return;
147 }
148
149 case SortingAlgorithm::HEAP:
150 std::make_heap(begin, end, comp);
151 std::sort_heap(begin, end, comp);
152 return;
153
154 case SortingAlgorithm::PARALLEL:
155 MayaFlux::Parallel::sort(MayaFlux::Parallel::par_unseq, begin, end, comp);
156 return;
157
158 case SortingAlgorithm::STANDARD:
159 default:
160 std::ranges::sort(begin, end, comp);
161 return;
162 }
163}

References HEAP, NTH_ELEMENT, PARALLEL, PARTIAL, STABLE, and STANDARD.

Referenced by sort_span().

+ Here is the caller graph for this function: