[正在研究Hoare分区问题,并意识到在左右两个指针同时遇到等于枢轴的值的情况下,Hoare Partitioning似乎无法正确排序项目。
例如,对于数组[0,2,1,0,2,1,2,0]
,如果您选择1作为枢轴,则左指针和右指针将同时遇到两个1,交换它们,然后继续,给出错误的[0,0,1,0,2,1,2,2]
输出]
这与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]
分区的目的不是对元素进行[[sort