我正在为我的课程《随机算法》读这本书。在这本特定的书中,有一整章专门介绍了使用随机选择来查找数组的中值,从而导致了更有效的算法。现在,我想知道除理论上的改进外,该算法在计算机科学领域是否还有实际应用。是否需要找到数组中位数的算法或数据结构?
3
您可能需要看一下快速排序:通过选择中位数作为枢轴,可以避免出现最坏情况(最坏情况下运行时= O(n log n)而不是O(n ^ 2)),递归深度将是最小化(log2(n))。
—
hoffmale
@hoffmale:但这不需要您找到中位数。它要求您找到一个合理接近中位数的值。例如,找到不在顶部5%或底部5%内的枢轴可保证O(n log n)。
—
gnasher729
@ gnasher729:但这不会最小化递归深度。这两个属性都很重要,例如在资源有限的实时环境中。
—
hoffmale
顺便说一下,@ hoffmale通常以2为底的对数符号(特别是在计算机科学家中)是(lg(n))中的“ lg”。
—
通配符
@ gnasher729由于该主题是随机算法,因此(相当接近)可能正是这些算法正在执行的操作。
—
康拉德·鲁道夫