【发布时间】:2013-07-14 03:16:04
【问题描述】:
在 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
编辑:input 更改为 m_input。
【问题讨论】:
-
建议。它不太可能伤害任何东西,但您可能仍然不希望有一个名为
input的变量,它也是 a common function used to obtain user input 的名称。 -
好点。适当注意和编辑:)