【发布时间】:2009-10-30 10:16:55
【问题描述】:
我正在尝试找出一种算法来查找数字列表中最高的 2 个数字。
最大的数字可以在 n-1 个阶段中找到,可能是通过冒泡排序的第一步或类似的方式。对我来说,似乎在平均总共 1.5n 次比较中也可以找到下一个最高的数字。
我的教授给我们布置了作业,让我们编写一个算法,在 n + log(n) 比较中找到最高的 2 个数字。这甚至可能吗?有什么想法、建议吗?
编辑:当我说 n + log(n) 时,我指的不是 O(n + log n),而是确切地说是 n + log n
【问题讨论】:
-
见问题编号。 1602998
-
这里有一个方便的链接:stackoverflow.com/questions/1602998
-
数字必须不同吗?例如。在列表 (1, 3, 2, 3) 中,两个最高的数字是 (3, 3) 还是 (2, 3)?
-
@jonB- 为了争论的缘故,我们假设这些数字都是不同的
-
@Niels 我刚刚仔细查看了该问题和答案,但我看不到任何可以帮助我实现 n + log n 结果的东西。你能说得更具体点吗?
标签: algorithm computer-science