算法导论 练习 2.3-5
2016-04-15 22:15
281 查看
题目:
说明二分查找算法最坏情况下的时间复杂度为什么是 Θ(lgn)\Theta(lgn),并给出代码解答:
二分查找每次舍弃一半,比较操作耗时是线性时间,所以很显然,递归式是 T(n)=T(n/2)+Θ(1)T(n)=T(n/2)+\Theta(1),为了方便计算,不妨把Θ(1)\Theta(1) 换成 CCT(n)=T(n/2)+C=T(n/4)+C+C=.....=T(1)+Clgn=Θ(lgn)T(n)=T(n/2)+C=T(n/4)+C+C=.....=T(1)+Clgn=\Theta(lgn)
后面学了主定理以后会发现这个其实就是Case2
代码:
int binary_search(int A[], int length, int v) { int low = 0; int high = length; int mid; while (low < high) { mid = (low + high) / 2; if (A[mid] == v) return mid; else if (A[mid] < v) low = mid + 1; else high = mid; } return 0; }
相关文章推荐
- 从dumpsys自定义服务来认识Android binder
- vector
- 如何系统学习大数据(转自知乎)
- C++中的小错误
- 《——————————搭建自己的网站————————————》
- Css基本样式(二)
- ASP.NET MVC之如何看待内置配置来提高性能优化(四)
- 面试题:递归反转一个栈
- Window7系统64位下安装Oracle 10g出错解决办法
- 分析linux进程调度与进程切换
- Error Domain=NSCocoaErrorDomain Code=3840 "JSON text did not start with array or object and option t
- Xshell连接虚拟机时,提示SSH服务器拒绝了密码
- Lua面向对象编程
- 解决低版本ie中文乱码 urlencode urldecode
- Android--view自定义--圆环等待
- 念念不忘SERVLET
- 机器学习笔记:Gradient Descent
- 前端学习笔录--2--HTML篇--有点麻烦的加载图片
- 2015级C++第8周项目 数组和指针
- NAVagationController