我们可以选择3元素分区的中位数来实现快速排序。同样,我们可以选择5,7或11元素的中位数来实现快速排序吗?如果是这样,那怎么??
答案 0 :(得分:6)
您应该查看Median of Medians algorithm。这是一个线性时间算法,具有以下重现...
T(n) ≤ T(n/5) + T(7n/10) + O(n)
......这是O(n)。算法详细说明......
......和一些伪代码......
MedianOfMedians (A[1],...,A[n])
begin
for i=1 to n/5 do {
let m_i be the median of A[5i − 4], A[5i − 3],..., A[5i];
}
pivot = Select(m1,...,m_n/5, n/10); // the pivot
return pivot
end
<强>参考强>
我希望这会有所帮助 Hristo