leetcode 912. 排序数组 medium
题目描述:
解题思路:
用来验证各种排序算法,写的对不对
代码:
快排
class Solution {
public:
vector<int> sortArray(vector<int>& nums) {
quick_sort(nums, 0, nums.size()-1);
return nums;
}
void quick_sort(vector<int> &nums, int l, int r){
if (l>=r)
return;
int i = rand() % (r-l+1) +l;
swap(nums[l], nums[i]);
int less = l, more = r+1, cur = l+1;
int pivot = nums[l];
while (cur < more){
if (nums[cur] < pivot)
swap(nums[cur++], nums[++less]);
else if (nums[cur] > pivot)
swap(nums[cur], nums[--more]);
else
cur++;
}
swap(nums[less], nums[l]);
quick_sort(nums, l, less-1);
quick_sort(nums, more, r);
}
};