《算法导论》学习笔记——求解时间复杂度

求解时间复杂度
主要有三种方法:代入法、递归树法、主方法

代入法
根据解的形式进行猜测,然后证明。
例子:
T(n)=2T(n/2)+Θ(n)
猜测T(n)=Ο(nlgn)
T(n)=2T(n/2)+Θ(n)<2c(n/2)lg(n/2)+dn=cnlgn-cnlg2+dn
证明完毕,只要我们选择合适的c与合适的d使得dn-cnlg2<0即可。

递归树求解法
画出递归树,并计算递归树的高度以及每一层递归树中的代价,再相加。
例子:
T(n)=2T(n/2)+Θ(n)
这里写图片描述
n变成1一共经历了log2n层。每一层的代价总和是cn,所以是nlgn。

主方法求解
形如T(n)=aT(n/b)+f(n)的递归式一般可以使用主方法进行求解。
首先计算logba=k,计算nk
将nk与f(n)进行比较。较大的决定了递归式的解。
若f(n)较大,则T(n)=Θ(f(n))
若nk较大,则T(n)=Θ(nk)
若相同,则T(n)=Θ(f(n)lgn)
这里的较大较小指的是多项式意义上的大小。
f(x)多项式大于g(x):
存在实数e>0,使得f(x)>g(x)*n^e
f(x)多项式小于g(x):
存在实数e>0,使得f(x)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值