def partitionnumsleft right # 分支思想求基准值索引 pivot = left i = left j = right while ij while ij and numsj numspivot j-=1 while ij and numsi numspivot i+=1
- 定义函数 partition(nums, left, right):
- 将 left 赋值给 pivot,即选取第一个元素作为基准值。
- 定义两个指针 i 和 j,分别指向 left 和 right。
- 进入循环,当 i<j 时:
- i 从左向右移动,直到找到第一个大于基准值的元素。
- j 从右向左移动,直到找到第一个小于基准值的元素。
- 如果 i<j,将 nums[i] 和 nums[j] 互换。
- 当 i>=j 时,遍历结束。将基准值 nums[pivot] 与 nums[i] 互换,此时 nums[pivot] 成为分界线,左边的元素都小于等于它,右边的元素都大于等于它。
- 返回 i,即基准值的索引位置。
原文地址: http://www.cveoy.top/t/topic/eqgm 著作权归作者所有。请勿转载和采集!