算法的运行时间由以下递归关系表示:
if n <= 3 then T(n) = n
else T(n) = T(n/3) + cn
以下哪一项表示算法的时间复杂度?
(一种) (n)
(B) (n记录n)
(C) (n ^ 2)
(D) (n ^ 2log n)
(A) A
(B) B
(C) C
(D) D答案: (A)
解释:
T(n)= cn + T(n / 3)= cn + cn / 3 + T(n / 9)= cn + cn / 3 + cn / 9 + T(n / 27)取无穷GP级数的和。 T(n)的值将小于此总和。 T(n)<= cn(1 /(1-1 / 3))<= 3cn / 2或者我们可以说cn <= T(n)<= 3cn / 2因此T(n)= (n)
这也可以使用主定理解决递归来解决。给定的表达式位于定理的情况3中。
这个问题的测验