Hoare分割算法的解释

2024-04-18 22:05:16 发布

您现在位置:Python中文网/ 问答频道 /正文

根据许多网站给出的伪代码,我编写了这个Hoare分区算法,它采用一个数组,根据给定的轴对子数组的开始和结束索引进行分区。它工作得很好,但是有人能解释一下逻辑,它是如何工作的吗?这里是代码:

def hoare(arr,start,end):
     pivot = 4
     i,j = start,end
     while i < j:
        while i < j and arr[i] <= pivot:
            i += 1
        while j >= i and arr[j] > pivot:
            j -= 1
        if i < j:
            arr[i],arr[j] = arr[j],arr[i]
     return j    

分区的另一种变体是Lomuto算法。它做了一些类似的事情,尽管因为我一开始就不理解Hoare算法,所以我无法发现差异。有谁能解释一下算法中发生了什么,哪种算法在哪种情况下会有更好的性能?


Tags: and代码算法网站def数组逻辑start