以下递归算法的运行时间大O [假设f1(n)= O(log n)]
function Recurse(A[1..n])
f1(n)
m <-- n/3
t1 <-- Recurse(A[1..m])
t2 <-- Recurse(A[(m+1)..2m])
t3 <-- Recurse(A[(2m+1)..3m])
return (t1+t2+t3)/3
end function
是O(log n)吗?如果没有,那么准确的结果是什么?
答案 0 :(得分:0)
使用主定理
T(n)= aT(n / b)+ f(n)其中a> = 1b> 1。 1
n是问题的大小。 a是递归中的子问题数。 n / b是每个子问题的大小。 (这里假设所有子问题的大小基本相同。) f(n)是在递归调用之外完成的工作的成本,其中包括划分问题的成本和将解决方案合并到子问题的成本。
T(n)= log n *(3 * n / 3) T(N)= n日志(n)的
http://en.wikipedia.org/wiki/Master_theorem