排序数组
- 题目链接
排序数组https://leetcode.cn/problems/sort-an-array/description/
- 算法原理
- 代码步骤
class Solution {
vector<int> tmp;
public:
vector<int> sortArray(vector<int>& nums)
{
tmp.resize(nums.size());
merge(nums, 0, nums.size() - 1);
return nums;
}
void merge(vector<int>& nums, int left, int right)
{
if(left >= right) return;
int mid = (right + left) >> 1;
merge(nums, left, mid);
merge(nums, mid + 1, right);
int i = 0, cur1 = left, cur2 = mid + 1;
while(cur1 <= mid && cur2 <= right)
{
tmp[i++] = nums[cur1] <= nums[cur2] ? nums[cur1++] : nums[cur2++];
}
while(cur1 <= mid) tmp[i++] = nums[cur1++];
while(cur2 <= right) tmp[i++] = nums[cur2++];
for(int i = left; i <= right; i++)
{
nums[i] = tmp[i - left];
}
}
};