在 Hoare 算法的规范实现中,我们需要数组的开始和结束元素作为参数,并且算法为分区数组的开始和结束维护几个标志。以下是我发现的一些标准实现:QuickSort and Hoare Partition Hoare Partition Correctness in java
现在,我做了以下操作,并用一些随机数组对其进行了测试。我不太确定我是否做错了什么——这个实现中是否有任何漏洞?直觉上感觉它与上面的实现非常相似,除了它需要更少的参数。与标准实现相比,它是否具有更好/更差的性能(甚至略微如此)?(尽管,是的,这两个都是 O(n))
(MATLAB)
function partition(m_input)
pivot = m_input(1);
size = length(m_input);
flag = 1;
k = 1;
while(k<=size)
if(m_input(k)>pivot)
swap(m_input(size), m_input(k))
size = size-1;
else
swap(m_input(k), m_input(flag))
flag =k;
k=k+1;
end
end
end
编辑:输入更改为m_input。