两种方法:
(1) 你可以使用归纳法:
假设 O(logn) 是正确的,那么我们应该显示:
---> 对于 n=1:它是真的 => f(2) = f(1) + 1 = 1 (f(1) 为零,因为 n>=2) 所以,它是常数并且 o (log2) = o(1)
---> 如果 n 为真,那么下一个值也应该为真(因为 n 是 2 的幂,所以它是 2n):
因此,我们假设 f(n) = f(n/2) + 1 时 O(logn) 为真
现在,我们应该看看它是否仍然适用于:
f(2n): f(2n) = f(n) + 1 => O(log2n) = O(logn) + 1
所以,我们可以再次看到它是真的。因为,对于较大的 n,我们有:
Left_side_of_equation:O(log2n)=O(logn + 1) = O(logn)
Right_side_of_equation:O(logn)+1 = O(logn)
================================================
(2)二叉搜索树概念:
如果您了解二叉搜索树,那么这个公式显示了可以基于二叉搜索树的算法的计算时间。所以,每一层的计算时间取决于它的子层(我的意思是它下面的一层)。而且,在每一层,添加的计算时间是 O(1)。因此,在二叉搜索树中,由于您有 Logn 层,因此您总共将拥有:Logn * o(1) 复杂度,即 O(logn)。