对于最佳案例复杂性 - 递归关系为T(n) = T(n/2) + dn
,这意味着复杂性为Θ(n)
。
因此,通过主理论,我可以清楚地看到为什么这是真的,但是当我将算法递归调用作为树时,我并不完全理解最终结果。 (好像我在log(n)的高度上有一个分支,在每个级别我操作一个分区O(n) - 所以它假设是nlog(n)
。
(仅用于记忆 - 这与mergeSort algorithem的最佳情况非常相似,但在这里我们忽略了分区后不需要的子数组。)
谢谢!
答案 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
您必须考虑dn
与n
一样大,但在递归关系中,n
不是全局变量,它是基于您调用的方法的局部变量。
所以有log(n)
次来电,但他们没有n
- 所有人都花时间,他们花费的时间越来越少。