Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void merger(vector<int>& T, int l, int m, int r)
- {
- vector<int> L(T.begin() + l, T.begin() + m + 1),
- R(T.begin() + m + 1, T.begin() + r + 1);
- L.push_back(INT_MAX), R.push_back(INT_MAX);
- for (int li = 0, ri = 0; li < L.size() - 1 || ri < R.size() - 1;)
- T[l + li + ri - 1] = (L[li] <= R[ri] ? L[li++] : R[ri++]);
- }
- void merge_sort(std::vector<int>& T, int l, int r)
- {
- if (l < r)
- {
- int m = l + (r - l) / 2;
- merge_sort(T, l, m), merge_sort(T, m + 1, r);
- merger(T, l, m, r);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement