11template<
typename Type>
18 std::make_move_iterator<
decltype(list.begin())>;
21 list.erase(list.begin());
23 auto predicate = [pivot = result.front()] (
auto e)
28 auto itr = std::partition(list.begin(), list.end(), predicate);
33 result.insert(result.begin(), move_itr(lower.begin()),
34 move_itr(lower.end()));
36 result.insert(result.end(),
37 move_itr(higher.begin()),
38 move_itr(higher.end()));
43template<
typename Type>
50 std::make_move_iterator<
decltype(list.begin())>;
53 result.splice(result.end(), list, list.begin());
55 auto predicate = [pivot = result.front()] (
auto e)
60 auto itr = std::partition(list.begin(), list.end(), predicate);
63 lower_part.splice(lower_part.end(), list, list.begin(), itr);
64 auto& high_part = list;
69 result.insert(result.begin(), move_itr(lower.begin()),
70 move_itr(lower.end()));
72 result.insert(result.end(),
73 move_itr(higher.begin()),
74 move_itr(higher.end()));
82 using list_t = std::list<element_t>;
84 list_t lst{5, 7, 3, 4, 1, 9, 2, 8, 10, 6};
90template<
typename ElementType>
97 container.erase(container.begin());
99 auto predicate = [pivot = result.front()] (
const auto& e)
104 auto itr = std::partition(container.begin(), container.end(), predicate);
108 { std::make_move_iterator(container.begin()), std::make_move_iterator(itr)};
111 { std::make_move_iterator(itr), std::make_move_iterator(container.end()) };
116 result.insert(result.begin(),
117 std::make_move_iterator(sorted_lower.begin()),
118 std::make_move_iterator(sorted_lower.end()));
120 result.insert(result.end(),
121 std::make_move_iterator(sorted_higher.begin()),
122 std::make_move_iterator(sorted_higher.end()));
127template<
typename ElementType>
130 if(container.empty())
134 container.pop_back();
136 auto predicate = [pivot = result.front()] (
const auto& e)
141 auto itr = std::partition(container.begin(), container.end(), predicate);
143 auto move_iterator = std::make_move_iterator<
decltype(container.begin())>;
146 { move_iterator(container.begin()), move_iterator(itr)};
149 { move_iterator(itr), move_iterator(container.end()) };
154 result.insert(result.begin(),
155 move_iterator(sorted_lower.begin()),
156 move_iterator(sorted_lower.end()));
158 result.insert(result.end(),
159 move_iterator(sorted_higher.begin()),
160 move_iterator(sorted_higher.end()));
vector_t< ElementType > sequential_quick_sort_vector(vector_t< ElementType > container)
void example_sequential_quick_sort_vector()
list_t< Type > sequential_quick_sort(list_t< Type > list)
list_t< Type > sequential_quick_sort_splice(list_t< Type > list)
void example_sequential_quick_sort()
std::vector< Type > vector_t
Stream output operators << are implemented.