912、排序数组
class Solution {
void quicksort(vector<int>& nums,int low,int high)
{
if(low < high){
int left = low;
int right = high;
int pivot = nums[left];
while(left < right)
{
while(left < right&&nums[right]>=pivot)
right--;
nums[left] = nums[right];
while(left<right&&nums[left]<=pivot)
left++;
nums[right] = nums[left];
}
nums[left] = pivot;
quicksort(nums,low,left-1);
quicksort(nums,left+1,high);
}
}
public:
vector<int> sortArray(vector<int>& nums) {
quicksort(nums,0,nums.size()-1);
return nums;
}
};
这样快一些
class Solution {
public:
void quick_sort(vector<int>& q,int l,int r) //快速排序
{
if(l >= r) return;
int x = q[l + (r - l) / 2],i = l - 1,j = r + 1;
while(i < j)
{
while(q[++i] < x);
while(q[--j] > x);
if(i < j) swap(q[i], q[j]);
}
quick_sort(q, l, j);
quick_sort(q, j + 1, r);
}
vector<int> sortArray(vector<int>& nums) {
quick_sort(nums, 0, nums.size() - 1);
return nums;
}
};