在数字的数组中查找中值元素的常用简单算法是:
- 从采样元素并替换为
- 排序并找到排名元素和的
- 检查和在的中位数的相对侧,并且对于某些适当的常数在和与之间最多有元素。如果没有发生,则失败。
- 否则,通过在和之间对的元素进行排序来找到中位数
不难看出这是线性运行的,并且成功的可能性很高。(所有不良事件与二项式的期望值相差很大。)
针对相同问题的另一种算法,这里描述的是一种更自然的方法,可以教给看过快速排序的学生:随机选择
还很容易看出,该循环的预期运行时间是线性的:说“回合”是一系列递归调用,当一个人进行1 / 4-3 / 4分割时结束,然后观察到一个回合最多为2。(在第一回合中,成功分割的概率为1/2,然后实际上增加了,因为描述了算法,所以回合长度受几何随机变量支配。)
所以现在的问题是:
是否有可能表明随机选择在线性时间内运行的可能性很高?
我们有回合,并且每个回合的长度至少为,概率最大为,因此并集约束得出运行时间为以概率。k 2 − k + 1 O (n log log n )1 − 1 / O (log n )
这有点令人不满意,但实际上是真的吗?
请阐明您的问题指的是哪种算法。
—
拉斐尔
您是在问是否正确应用了工会界限,还是有一个更好,更令人满意的界限?
—
乔
@乔后者。关键是,倒圆是一种伪像,可以使倒圆的长度受几何图形支配。然后,anaylisys会“忘记”该算法是始终在鼻子上进行1 / 4-3 / 4拆分以使几何图形独立的算法的领先还是落后。我在问尤瓦尔(Yuval)在下面所说的“作弊”是否仍然很严密。
—
路易(Louis)