用大O表示递归算法的运行时间

时间:2014-09-21 15:15:26

标签: algorithm

以下递归算法的运行时间大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)吗?如果没有,那么准确的结果是什么?

1 个答案:

答案 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