void quicksort(vector<int> &nums, int left, int right){
//一定不要忘了,递归算法,一开始一定是判断退出条件
if (left >= right)
return;
int q = nums[right];
int i = left, j = right;
while (i < j){
while (i < j&&nums[i] < q) i++;
nums[j] = nums[i];
//注意上下两个这个while循环的判断条件中,必然有一个是 =的,否则数组中出现相等的元素会出现死循环。
while (i<j&&nums[j]>=q) j--;
nums[i] = nums[j];
}
nums[i] = q;
quicksort(nums, left, i - 1);
quicksort(nums, i+1, right);
return;
}
快速排序程序及易错点总结
最新推荐文章于 2021-05-29 17:22:17 发布