模板1(j 作为左边的分割点)
int quick_sort(vector<int>& nums, int l, int r) {
if(l >= r) return nums[l];
int mid = nums[(l + r) / 2];
int i = l - 1, j = r + 1;
while(i < j) {
do i ++; while(nums[i] < mid);
do j --; while(nums[j] > mid);
if(i < j) swap(nums[i], nums[j]);
}
quick_sort(nums, l, j);
quick_sort(nums, j+1, r);
}
模板2(i-1 作为左边的分割点)
int quick_sort(vector<int>& nums, int l, int r) {
if(l >= r) return nums[l];
int mid = nums[(l + r + 1) / 2];
int i = l - 1, j = r + 1;
while(i < j) {
do i ++; while(nums[i] < mid);
do j --; while(nums[j] > mid);
if(i < j) swap(nums[i], nums[j]);
}
quick_sort(nums, l, i-1);
quick_sort(nums, i, r);
}