【问题标题】:Complexity analysis of QuickSort from first principles从第一原理开始快速排序的复杂性分析
【发布时间】:2012-05-01 15:05:01
【问题描述】:

我正在尝试了解复杂性分析以及如何从第一原理开始执行它。以 QuickSort 为例,我希望能够推导出该算法的平均情况复杂度的 O-notation 表达式。

我知道 QuickSort 是 O(nlog(n)) 并且我理解为什么,它必须在每次迭代中传递 n 个元素,并且递归深度是 log n。但我不知道你会如何用第一原理来展示这一点,即计算原始操作。

【问题讨论】:

  • +1 供 Cormen 参考。
  • 但是关于从“第一原则”推导出复杂性。第一性原理不是意味着计算原始操作吗?
  • @Jim_CS:您不需要计算单个原始操作。每次迭代/递归是否有 10 个或 100 个操作都没有关系,只要该数字是恒定的即可。增长由迭代/递归的数量控制。
  • 与其结束这个问题,我认为值得将维基百科参考放在答案中并投票。

标签: algorithm complexity-theory


【解决方案1】:

Knuth,计算机编程的艺术,第 3 卷(排序和搜索),第 5.2.2 节(按交换排序)详细分析了快速排序的具体实现(在 MIX , 当然)。他可能是世界上唯一一个愿意手工进行此类分析以供人类消费的人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-20
    • 1970-01-01
    • 2018-10-16
    • 2019-03-07
    • 1970-01-01
    • 2013-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多