以下是Hoare
我编写的分区算法,用于根据给定的枢轴对数组进行分区(在这种情况下,它是数组的第一个元素,一个相当糟糕的选择!)。但是,Bentley-McIlroy 3-way partitioning
http ://www.sorting-algorithms.com/static/QuicksortIsOptimal.pdf声称当键数相等时可以提供更好的性能。谁能简要解释第 9 页上的代码实现了什么,以及为什么它比Hoare
算法执行得更好?还有一个问题,分区基于 和 放置<
元素。如果多次出现的元素不是枢轴怎么办?=
>
def hoare(arr,start,end):
pivot = arr[start]
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]
arr[start],arr[j] = arr[j],arr[start]
return j