Advertisement
keverman

Merge sort

Feb 9th, 2020
249
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.55 KB | None | 0 0
  1. void merger(vector<int>& T, int l, int m, int r)
  2. {
  3.     vector<int> L(T.begin() + l, T.begin() + m + 1),
  4.                 R(T.begin() + m + 1, T.begin() + r + 1);
  5.     L.push_back(INT_MAX), R.push_back(INT_MAX);
  6.  
  7.     for (int li = 0, ri = 0; li < L.size() - 1 || ri < R.size() - 1;)
  8.         T[l + li + ri - 1] = (L[li] <= R[ri] ? L[li++] : R[ri++]);
  9. }
  10.  
  11. void merge_sort(std::vector<int>& T, int l, int r)
  12. {
  13.     if (l < r)
  14.     {
  15.         int m = l + (r - l) / 2;
  16.         merge_sort(T, l, m), merge_sort(T, m + 1, r);
  17.         merger(T, l, m, r);
  18.     }
  19. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement