Untitled
unknown
plain_text
a year ago
1.2 kB
7
Indexable
class Solution { public: void mergeSort(int l, int r, vector<int> &nums) { if (l + 1 == r) { if (nums[l] > nums[r]) { swap(nums[l], nums[r]); } return; } else if (l == r) { return; } int mid = (l + r) / 2; mergeSort(l, mid, nums); mergeSort(mid + 1, r, nums); int left = l; int right = mid + 1; vector<int> sortedArr; while (left <= mid && right <= r) { if (nums[left] < nums[right]) { sortedArr.emplace_back(nums[left++]); } else sortedArr.emplace_back(nums[right++]); } if (left == mid + 1 && right <= r) { for (int i=right; i<=r; ++i) sortedArr.emplace_back(nums[i]); } else if (right == r + 1 && left <= mid) { for (int i=left; i<=mid; ++i) sortedArr.emplace_back(nums[i]); } for (int i=0; i<sortedArr.size(); ++i) { nums[l+i] = sortedArr[i]; } } vector<int> sortArray(vector<int>& nums) { mergeSort(0, nums.size()-1, nums); return nums; } };
Editor is loading...
Leave a Comment