7template<
typename ElementType>
10 if(container.empty())
return container;
12 auto move_iterator = std::make_move_iterator<
decltype(container.begin())>;
13 using container_t = std::vector<ElementType>;
15 container_t result{ container.back() };
21 auto predicate = [pivot = result.front()](
const auto& e)
26 auto itr = std::partition(container.begin(), container.end(), predicate);
29 container_t{ move_iterator(container.begin()), move_iterator(itr)});
32 container_t{ move_iterator(itr), move_iterator(container.end())});
34 result.insert(result.begin(),
35 move_iterator(sorted_lower_part.begin()),
36 move_iterator(sorted_lower_part.end()));
38 result.insert(result.end(),
39 move_iterator(sorted_higher_part.begin()),
40 move_iterator(sorted_higher_part.end()));
47 std::vector<int> container {5, 7, 3, 4, 1, 9, 2, 8, 10, 6};
49 stream <<
"Before Sort: " << container <<
endl;
56 std::vector<std::string> container {
"banana",
"dango",
"cherry",
"echo",
"apple",
"fox",
59 stream <<
"Before Sort: " << container <<
endl;
void test_sequential_quick_sort_string()
void test_sequential_quick_sort()
std::vector< ElementType > sequential_quick_sort(std::vector< ElementType > container)
Stream output operators << are implemented.