Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <algorithm>
- #include <iostream>
- #include <numeric>
- #include <vector>
- #include <algorithm>
- using namespace std;
- template <typename It>
- void PrintRangeComma(const It range_begin, const It range_end) {
- if (range_begin == range_end)
- {
- return;
- }
- bool ch = true;
- for (auto it = range_begin; it != range_end; ++it) {
- if (!ch)
- {
- cout << ", ";
- }
- ch = false;
- cout << *it;
- }
- cout << endl;
- }
- template <typename RandomIt>
- void MergeSort(RandomIt range_begin, RandomIt range_end) {
- int range_length = range_end - range_begin;
- if (range_length < 2) {
- return;
- }
- vector<typename RandomIt::value_type> elements(range_begin, range_end);
- auto mid = elements.begin() + range_length / 2;
- MergeSort(elements.begin(), mid);
- MergeSort(mid, elements.end());
- sort(elements.begin(), elements.end());
- merge(elements.begin(), elements.end(), mid, mid, range_begin);
- }
- int main() {
- vector<int> test_vector(10);
- iota(test_vector.begin(), test_vector.end(), 1);
- random_shuffle(test_vector.begin(), test_vector.end());
- PrintRangeComma(test_vector.begin(), test_vector.end());
- MergeSort(test_vector.begin(), test_vector.end());
- PrintRangeComma(test_vector.begin(), test_vector.end());
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement