【发布时间】:2023-04-01 14:03:01
【问题描述】:
正在研究 Hoare 分区问题,并意识到在左右指针同时遇到等于枢轴的值的情况下,Hoare 分区似乎无法正确排序项目。
例如对于数组[0,2,1,0,2,1,2,0],如果你选择1作为主元,左右指针会同时遇到两个1,交换它们,然后继续,给出不正确的@输出987654322@
这是已知的 Hoare 分区问题吗?人们通常如何处理这种情况?
作为参考,这是我正在使用的代码:
def hoarePartition(nums):
left, right = -1, len(nums)
while True:
left += 1
while nums[left] == 0:
left += 1
right -= 1
while nums[right] == 2:
right -= 1
if left >= right:
return
nums[left], nums[right] = nums[right], nums[left]
【问题讨论】:
标签: algorithm sorting quicksort