如何在一般情况下设置最小比较次数?
引用唐纳德·克努斯的话(通过维基百科,因为我现在没有我的《计算机程序设计艺术》副本),比较次数的下限是六:
http://en.wikipedia.org/wiki/Selection_algorithm (滚动到标题为“Lower Bounds”的部分)。
你的目标是有效地找到k个最小值,其中k是列表大小的一半,向上取整(因此,k = 3;n = 5),然后取这些值中的最大值。将其插入页面上的公式中,您将得到:
(5 - 3) + 1 + 1 + 2 = 6