随机选择复杂性

时间:2016-07-01 10:48:35

标签: algorithm complexity-theory selection-sort

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

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

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

谢谢!

1 个答案:

答案 0 :(得分:2)

正如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 - 所有人都花时间,他们花费的时间越来越少。