使用Big-Oh:
需要一些帮助来解决此运行时重现问题T(n) = T(n/2) + T(n/2 - 1) + n/2 + 2
我不太懂得如何使用这里的主定理
答案 0 :(得分:0)
对于n 足够,你可以假设T(n/2 - 1) == T(n/2)
,所以你可以改变
T(n) = T(n/2) + T(n/2 - 1) + n/2 + 2
进入
T(n) = 2*T(n/2) + n/2 + 2
使用主定理(http://en.wikipedia.org/wiki/Master_theorem)
T(n) = a*T(n/b) + f(n)
a = 2
b = 2
f(n) = n/2 + 2
c = 1
k = 0
log(a, b) = 1 = c
所以你有(案例2 ,因为log(a, b) = c
)
T(n) = O(n**c * log(n)**(k + 1))
T(n) = O(n * log(n))