shizaero

Untitled

May 7th, 2023
197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.09 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. using namespace std;
  5.  
  6. template <typename It>
  7. void PrintRange(It range_begin, It range_end) {
  8.     for (auto it = range_begin; it != range_end; ++it) {
  9.         cout << *it << " "s;
  10.     }
  11.     cout << endl;
  12. }
  13.  
  14. template <typename RandomIt>
  15. void MergeSort(RandomIt range_begin, RandomIt range_end) {
  16.     int range_num = distance(range_begin, range_end); // количество элементов в контейнере
  17.     if (range_num < 2) return;
  18.     auto mid = range_begin + (range_end - range_begin) / 2; // середина контейнера
  19.  
  20.     MergeSort(range_begin, mid);
  21.     MergeSort(mid + 1, range_end);
  22.     merge(range_begin, mid, mid+1, range_end, greater<>());
  23. }
  24.  
  25. int main() {
  26.     vector<int> a, b;
  27.     a = { 5,4,3,2,1 };
  28.     b = { 4,3,2,1 };
  29.  
  30.     random_shuffle(a.begin(), a.end());
  31.     PrintRange(a.begin(), a.end());
  32.     MergeSort(a.begin(), a.end());
  33.     PrintRange(a.begin(), a.end());
  34.  
  35.     /*PrintRange(b.begin(), b.end());
  36.     MergeSort(b.begin(), b.end());
  37.     PrintRange(b.begin(), b.end());*/
  38. }
Advertisement
Add Comment
Please, Sign In to add comment