shizaero

Untitled

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