以二分法寻找算法为例,在数组 A[p..q] 中寻找v值:
代入法
代入法的基本步骤是先推测递归方程的显式解,然后用数学归纳法来验证该解是否合理。
上面二分法计算时间的递归方程为:T(n) = 2T(n/2) + O(n),其中T(1) = O(1),我们猜测一个解T(n) = O(n2 ),根据符号O的定义,对n>n0,有T(n) < cn2 - eO(2n)
(注意,这里减去O(2n),因其是低阶项,不会影响到n足够大时的渐近性),把这个解代入递归方程,得到:
T(n) = 4T(n/2) + O(n)
≤ 4c(n/2)2 - eO(2n/2)) + O(n)
= cn2 - eO(n) + O(n)
≤ cn2
其中,c为正常数,e取1,上式符合 T(n)≤cn2 的定义,则可认为O(n2 )是T(n)的一个解,再用数学归纳法加以证明。
参考资料:
递归算法的时间复杂度分析
http://blog.csdn.net/metasearch/article/details/4428865