求算法的时间复杂度级别
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、祝福
祝愿考研学子:有志者事竟成。
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、祝福
祝愿考研学子:有志者事竟成。
相关文章推荐
- Linux程序包管理
- Linux程序包管理
- #LeetCode# #C++# Binary Tree Inorder Traversal
- Eclipse中设置代码缩进为空格缩进
- Android之平时遇见的异常和错误总结(不断更新)
- 在一个字符串中找第一个只出现一次的字符
- Java 8 Lambda实现原理分析
- MAC下的SVN服务器建立
- .NET基础拾遗(6)ADO.NET与数据库开发基础
- Linux常用系统信息查看命令
- linux下c开发工具详解
- OpenCV 使用C++获取摄像头数据并保存示例
- 打印小程序
- 51单片机按键直接控制舵机旋转
- 修改TabControl选项卡名字
- __new__ 和 __init__
- MyISAM和InnoDB引擎
- 《构建之法》第一章 概论
- MM_jumpMenu函数 跳转菜单
- ANDROID 序列化Parcelable /Serializalble