递归方程求时间复杂度

 我来答
户如乐9318
2022-07-15 · TA获得超过6667个赞
知道小有建树答主
回答量:2559
采纳率:100%
帮助的人:140万
展开全部

最近菜鸡作者苦于解递归方程求解时间复杂度的一些问题
整理一下思路
递归算法的运行时间常用递归表达式表示。
本文主要讲解如何从递归表达式求解出时间复杂度。
万变不离其宗,总结以下四种形式。

T(n) = T(n-1)+1

解:T(n) = T(n-1)+1 = [T(n-2)+1]+1 = T(n-2)+2 = T(n-3)+3 = ... = T(n-n)+n = n

故 O(n) = n

T(n) = T(n-1)+n-1

解:T(n) = T(n-1)+n-1 = T(n-2)+(n-2)+(n-1) = T(n-3)+(n-3)+(n-2)+(n-1) = ...

= T(n-(n-1))+n-(n-1)+...+(n-2)+(n-1) = 0+1+2+3+4+...+(n-1) = n(n-1)/2

故 O(n) = n^2

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

解:T(n) = 2T(n-1)+1 = 2( 2T(n-2)+1)+1 = 4T(n-2)+2+1 = ...

= 2 (n-1)T(n-(n-1))+2 (n-2)+...2^2+2+1 = 2 (n-1)+2 (n-2)+...2 2+2+1=2 n-1

故O(n) = 2^n

T(n) = 2T(n/2)+n-1

解: T(n) = 2T(n/2)+n-1 = T(n) = 2(T(n) = 2T(n/4)+n/2-1)+n-1 = 4T(n/4)+2n-2-1 = 4(2T(n/8)+n/4-1)+2n-2-1

= 8T(n/8)+3n-4-2-1 = 2 k(T(n/(2 k)))+kn-2^(k-1)-...-4-2-1

令n=2^k

代入得:T(n) = (2 k)T(1)+k(2 k)-(2^(k-1)+...+4+2+1) = (k+1)(2 k)-((2 k)-1) = n(logn)+1

故 O(n)= n(logn)

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式