Hoare分割在某些情况下会失败吗?

问题描述 投票:0回答:1

[正在研究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]
algorithm sorting quicksort
1个回答
3
投票

分区的目的不是对元素进行[[sort

© www.soinside.com 2019 - 2024. All rights reserved.