算法设计与分析-时间复杂度复习

一、对算法分析具有重要意义的函数值


二、递归算法的数学分析

  • 递归函数有两个要素: 结束条件和递归公式
  • 步骤:
    • 决定用哪些参数作为输入规模的度量(eg:数组元素的个数)
    • 找出算法基本操作
    • 检查一下,对于相同规模的不同输入,基本操作的执行次数是否不同(如果不同的话则要对最差效率和最优效率进行研究)
    • 建立一个递推关系以及相应的初始条件
  • 例题:
F(n){
 if n=0 return 1;
 else return F(n-1)*n

 当n>0时,M(n) = M(n-1) + 1;

M(n)表示规模为n的阶乘的乘法数量

M(n-1)表示做完一次乘法后,阶乘规模变为n-1

1 表示做一次乘法F(n-1)*n

  • M(n)=M(n-1)+1 = M(n-2)+2 = M(n-3)+3 = M(n-i)+i=M(n-n)+n = M(0)+n = n

三、递推关系的一些求解方法

1.前向替代法

x(n)=2x(n-1) +1

x(1)=1  x(2) =3 x(3)=7 x(4)=15

==>x(n)=2^{n}-1

2.反向替代法(如例题) 

3.二阶常系树线性递推式

ax(n)+bx(n-1)+cx(n-2) = 0的特征方程为ar^{2}+br+c = 0

  • 第一种情况,如果r1,r2是不相等的实根 x(n)=ar{_{1}}^{n}+\beta r{_{2}}^{n}
  • 第一种情况,r1=r2 x(n)=ar^{n}+\beta nr^{n}

四、极限法判断时间复杂度

  •  判断t(n) \epsilon og(n)
    • \lim_{x->\infty } \frac{t(n)}{g(n)} = c
    • \lim_{x->\infty } \frac{t(n)}{g(n)} = 0
  • 判断t(n)\epsilon \Omega g(n)
    • \lim_{x->\infty } \frac{t(n)}{g(n)} = \infty

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值