Advertisement
chevengur

СПРИНТ № 8 | Санитайзеры и другие инструменты поиска ошибок | Урок 4: Отладочные макроопределения

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