您的位置:首页 > 其它

求算法的时间复杂度级别

2015-10-01 23:15 816 查看
该题目出自王道2015年数据结构复习指导P008综合应用第一题。

1、题目:一个算法所需时间由下述递归方程表示,试求出该算法的时间复杂度级别(或阶)

T(n)=1,若n=1

T(n)=2T(n/2)+n,若n>1;

式子中,n是问题的规模,为简单起见,设n是2的整数幂。

2、解题思路:根据上述的递归公式求出式子的T(n)即可,这说是一个算法题目,更像是一个数学题目。

3、解题步骤:

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

两边同时除以n,得到

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

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

………… 

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

注:因为每次式子的变化都是除以2变化的,所以式子的个数是log2(n)

将下面的式子都带入到式子(1)中可以得到

T(n)/n=T(1)/1+1*log2(n)

T(n)=n(T(1)/1+1*log2(n))

T(1)=1

所以T(n)=n(1+log2(n))

所以O(n)=nlog2(n)

4、祝福
祝愿考研学子:有志者事竟成。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: