Advertisement
hurmawe

Сортировка слиянием

Dec 18th, 2020
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.91 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5.  
  6. vector<int> merge(const vector<int> &a, const vector<int> &b)
  7. {
  8.     int a_size = a.size();
  9.     int b_size = b.size();
  10.     vector<int> c(a_size + b_size);
  11.     int i = 0, j = 0, k = 0;
  12.     while(i<a_size||j<b_size)
  13.     {
  14.         if (j == b_size || (i < a_size && a[i] < b[j]))
  15.             c[k++] = a[i++];
  16.         else
  17.             c[k++] = b[j++];
  18.     }
  19.     return c;
  20. }
  21.  
  22. vector<int> mergeSort(const vector<int> &a, int l, int r)
  23. {
  24.     int n = r-l;
  25.     if (n <= 1)
  26.         return vector<int> (a.begin()+l,a.begin()+r);
  27.     int mid = (l + r) / 2;
  28.     vector<int> a_l = mergeSort(a, l, mid);
  29.     vector<int> a_r = mergeSort(a, mid, r);
  30.     return merge(a_l, a_r);
  31. }
  32. int main()
  33. {
  34.     int number_1;
  35.  
  36.     cin >> number_1;
  37.     vector<int> array_1(number_1);
  38.     for (auto& x : array_1)
  39.     {
  40.         cin >> x;
  41.     }
  42.  
  43.  
  44.     array_1 = mergeSort(array_1, 0, number_1);
  45.  
  46.     for (auto& x : array_1)
  47.     {
  48.         cout << x << " ";
  49.     }
  50.  
  51.     return 0;
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement