递归算法时间复杂度的估计问题
来源:互联网 发布:首席数据家 编辑:程序博客网 时间:2024/05/21 21:49
在递归算法中,我们常常需要计算算法的时间复杂度。例如前一次讲到的合并排序,就是一个递归的过程。递归过程可以用下面的式子来描述:
当n=1时,算法的时间复杂度为O(1),当n>1时,算法可以拆分成多个相同的子过程。计算这样的递归算法的时间复杂度大体上有三种方法。1、代换法。代换法首先要猜测解的形式,然后要用数学归纳法来证明。2、递归树方法。将迭代的过程画成一个递归树,通过递归树来确定时间复杂度。3、主方法。主方法是一组公式,用来求三种条件下的递归式的时间复杂度。但是主方法并不能涵盖所有的情况,有的是主方法没法求的。
由于主方法的三种情况容易忘记,因此主要将主方法的三种情况记录如下。
主方法主要面对的是下面的一种情况:
其中f(n)为一个任意的表达式。那么,针对不同的a,b,主方法将有以下的集中策略:
1、对于某常数s>0,有,则
2、若,则
3、若对于某常数s>0,有,且对常数c<1有足够大的n,有,那么。
但是要注意一点,即主方法并不适用于所有的情况。
例如当递归式为时条件不满足。不难验证,这时既不符合第二种情况也不符合第三种情况,可以说是位于第二种第三种之间。对于这样的问题,就只能用代入法和递归子树的方法来解决。
0 0
- 递归算法时间复杂度的估计问题
- 递归算法的时间复杂度
- 递归算法的时间复杂度
- 递归算法的时间复杂度
- 递归算法时间复杂度
- 递归算法时间复杂度
- 递归算法的时间复杂度分析
- 递归算法的时间复杂度分析
- 递归算法的时间复杂度分析
- 递归算法的时间复杂度分析
- 递归算法的时间复杂度求解
- 递归算法的时间复杂度终结篇
- 递归算法的时间复杂度分析
- 递归算法的时间复杂度分析
- 递归算法的时间复杂度计算
- 递归算法的时间复杂度分析
- 递归算法的时间复杂度分析
- 递归算法的时间复杂度终结篇
- Candy
- java实现caesar加解密算法
- 黑马程序员_Java IO流(下)
- 算法训练 操作格子
- JS 网页快捷键设置
- 递归算法时间复杂度的估计问题
- cocos2dx 3.0 自学 No.1 override
- 【deep learning】
- jQuery学习笔记- focus和blur事件妙用
- 定制iOS 7中的导航栏和状态栏
- Android 偏好设置 大于3.0使用 (类似Settings界面效果)
- 算法之01背包问题
- 左路Deep Learning+右路Knowledge Graph,谷歌引爆大数据
- nyoj-27-水池数目