Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <algorithm>
- using namespace std;
- template <typename It>
- void PrintRange(It range_begin, It range_end) {
- for (auto it = range_begin; it != range_end; ++it) {
- cout << *it << " "s;
- }
- cout << endl;
- }
- template <typename RandomIt>
- void MergeSort(RandomIt range_begin, RandomIt range_end) {
- int range_num = distance(range_begin, range_end); // количество элементов в контейнере
- if (range_num < 2) return;
- auto mid = range_begin + (range_end - range_begin) / 2; // середина контейнера
- MergeSort(range_begin, mid);
- MergeSort(mid + 1, range_end);
- merge(range_begin, mid, mid+1, range_end, greater<>());
- }
- int main() {
- vector<int> a, b;
- a = { 5,4,3,2,1 };
- b = { 4,3,2,1 };
- random_shuffle(a.begin(), a.end());
- PrintRange(a.begin(), a.end());
- MergeSort(a.begin(), a.end());
- PrintRange(a.begin(), a.end());
- /*PrintRange(b.begin(), b.end());
- MergeSort(b.begin(), b.end());
- PrintRange(b.begin(), b.end());*/
- }
Advertisement
Add Comment
Please, Sign In to add comment