【问题标题】:Randomized selection complexity随机选择复杂度
【发布时间】:2017-01-18 08:53:25
【问题描述】:

分析算法复杂度后我有几个问题:

对于最佳案例复杂度 - 递归关系为 T(n) = T(n/2) + dn,这意味着复杂度为 Θ(n)

所以通过大师理论我可以清楚地看到为什么这是真的,但是当我将算法递归调用绘制为树时,我并不完全理解最终结果。 (似乎我在 log(n) 的高度上有一个分支,在每个级别我操作一个分区 O(n) - 所以它假设是 nlog(n) 。 (只是为了记忆——这与 mergeSort 算法的最佳情况非常相似,但这里我们忽略了分区后不需要的子数组)。

谢谢!

【问题讨论】:

  • N+N/2+N/4+N/8+...=2N 即使有 Log(N) 项。
  • 你能用 sigma 符号写出完整的方程吗?

标签: algorithm complexity-theory selection-sort


【解决方案1】:

正如 Yves Daoust 所写。用实数成像,即 n=1024

T(n) = T(n/2) + dn
T(1024) = T(512) + 1024
T(512) = T(256) + 512
....
T(2) = T(1) +  2 -> this would be the last operation

因此你得到1024+512+256+...+1 <= 2048,即2n

您必须考虑dnn 一样大,但在递归关系中n 不是全局变量,它是基于您调用的方法的局部变量。

所以有log(n) 的电话,但他们不占用n-time 每个人,他们占用的时间越来越少。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-23
    • 2019-05-05
    • 1970-01-01
    • 1970-01-01
    • 2020-02-19
    • 2017-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多