【问题标题】:Why comparison-based sorting algorithm have lower bound of Ω(n log n) for its worst-case running time? [closed]为什么基于比较的排序算法在最坏情况下的运行时间有 Ω(n log n) 的下限? [关闭]
【发布时间】:2015-02-11 19:30:06
【问题描述】:

我知道任何基于比较的排序算法在最坏情况下的运行时间都有一个 Ω(n log n) 的下限,但为什么会这样呢?反正我能证明吗?

【问题讨论】:

  • 这个问题似乎是题外话,因为它是关于计算理论,而不是编程。试试cs.stackexchange.com
  • 你可能想读这个:en.wikipedia.org/wiki/…
  • @Raymond 常见问题解答明确说“软件算法”,所以虽然你可能是对的,它是关于计算理论的,但它仍然显然在 SO 允许的范围内,除非有一个 Meta 帖子特别说这不适用于 cs.se。我是 SQA 的版主,但我们不会自动 VTC/VTMigrate 那里的所有测试/硒相关问题。
  • @corsiKa SO 代表“practical, detailed questions”。计算理论是一个理论问题,而不是一个实际问题。关于软件算法的一个实际问题是“我无法让这个算法工作。”
  • @Raymond 您正在对标准进行与运算。您应该对这些标准进行 ORing。

标签: algorithm sorting comparison


【解决方案1】:

有 n! n 个对象的排列。排序算法需要对 n!排列以使它们恢复正常。一个测试 k 次比较的排序算法只能看到 2^k 个不同的结果,所以我们需要 2^k >= n!让它在每个 n! 上做一些不同的事情!排列。如果您使用http://en.wikipedia.org/wiki/Stirling%27s_approximation 表示n!并忽略除第一项之外的所有内容,您将得到 n log n 比较。参见例如http://www.cs.cmu.edu/afs/cs.cmu.edu/academic/class/15211/fall.97/www/recitations/rec1006

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-09
    • 2014-03-30
    • 1970-01-01
    • 2016-01-31
    • 2013-05-04
    • 2011-11-01
    • 1970-01-01
    • 2021-07-28
    相关资源
    最近更新 更多