我们可以证明提取中位数的算法必须对集合进行分区吗?

时间:2014-01-01 20:31:13

标签: algorithm time-complexity median quickselect

提取51个元素的中位数,包括将H(ead)组中的51分成25,然后是中位数,接着是T(所有)25。我所知道的所有算法结束具有H和T使得[min(H),max(H)[和] min(T),max(T)]不重叠的附加属性。

这个额外的财产是否被证明是强制性的(我猜是的)? 我在哪里可以找到证据(我想它已经做了很长时间)?

(这只是为了爱算法)

1 个答案:

答案 0 :(得分:0)

如果元素不是唯一的,那么这两个集合实际上可以重叠(想象一下51个相同元素的列表......)

如果元素是唯一的,则非重叠属性很容易通过矛盾来证明。从我们的独特元素的划分:

  • x< H
  • 中所有x的中位数
  • y> H
  • 中所有y的中位数

假设H和T重叠。然后我们有:

  • x> = y对于某些x = max(H),y = min(T)

但这意味着:

  • x> = y>中值

这是一个相互矛盾,因为我们知道x<中位数。因此这两组不能重叠。