1.分治思想
int partition(vector<int>& nums, int left, int right) {
int piovt = nums[right];
//如果piovt为right,则从left开始;
//如果piovt为left,则从right开始;
//是为了防止覆盖
while (left < right) {
while (left < right && nums[left] <= piovt)
left++;
if(left<right) nums[right--] = nums[left]; //有无--(++)无所谓
while (left < right && nums[right] >= piovt)
right--;
if (left < right) nums[left++] = nums[right];
}
//left or right无所谓,因为此刻left==right
nums[left] = piovt;
return left;
}
void quicksort(vector<int>& nums, int left, int right) {
if (left >= right) return;
int mid = partition(nums, left, right);
quicksort(nums, left, mid - 1);
quicksort(nums, mid + 1, right);
}
(此文仅用于记录代码)