shushus

Спринт 8. Отладочные макроопределения.

Feb 2nd, 2023
244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.28 KB | None | 0 0
  1. #include <algorithm>
  2. #include <iostream>
  3. #include <numeric>
  4. #include <vector>
  5.  
  6. using namespace std;
  7.  
  8. template <typename It>
  9. void PrintRangeComma(It range_begin, It range_end) {
  10.     if (range_begin == range_end) {
  11.         return;
  12.     }
  13.     for (auto it = range_begin;;) {
  14.         cout << *it;
  15.         if (++it == range_end) {
  16.             break;
  17.         }
  18.         else {
  19.             cout << ", "s;
  20.         }
  21.     }
  22.     cout << endl;
  23. }
  24.  
  25. template <typename RandomIt>
  26. void MergeSort(RandomIt range_begin, RandomIt range_end) {
  27.     auto range_length = range_end - range_begin;
  28.     if (range_length < 2) {
  29.         return;
  30.     }
  31.  
  32.     vector<typename RandomIt::value_type> elements(range_begin, range_end);
  33.  
  34.     auto mid = elements.begin() + range_length / 2;
  35.  
  36.     MergeSort(elements.begin(), mid);
  37.     MergeSort(mid, elements.end());
  38.  
  39.     merge(elements.begin(), mid, mid, elements.end(), range_begin);
  40. }
  41.  
  42. int main() {
  43.     vector<int> test_vector(10);
  44.  
  45.     iota(test_vector.begin(), test_vector.end(), 1);
  46.  
  47.     random_shuffle(test_vector.begin(), test_vector.end());
  48.  
  49.     PrintRangeComma(test_vector.begin(), test_vector.end());
  50.  
  51.     MergeSort(test_vector.begin(), test_vector.end());
  52.  
  53.     PrintRangeComma(test_vector.begin(), test_vector.end());
  54.  
  55.     return 0;
  56. }
Advertisement
Add Comment
Please, Sign In to add comment