题目
LeetCode:912. 排序数组
给你一个整数数组 nums,请你将该数组升序排列。
示例 1:
输入:nums = [5,2,3,1]
输出:[1,2,3,5]
示例 2:
输入:nums = [5,1,1,2,0,0]
输出:[0,0,1,1,2,5]
提示:
1 <= nums.length <= 50000
-50000 <= nums[i] <= 50000
代码
class Solution {
public:
vector<int> sortArray(vector<int>& nums) {
int left=0;
int right=nums.size()-1;
QuickSort(nums,left,right);
return nums;
}
int get_index(vector<int>&a, int left, int right)
{
int pivot = a[left];
while (left < right)
{
while (left < right&&pivot <= a[right])
right--;
a[left] = a[right];
while (left < right&&pivot >= a[left])
left++;
a[right] = a[left];
}
a[left] = pivot;
return left;
}
void QuickSort(vector<int>&a, int left, int right)
{
if (left < right)
{
int index = get_index(a, left, right);
QuickSort(a, left, index - 1);
QuickSort(a, index + 1, right);
}
}
};
思路
复习快排