毕业论文
计算机论文
经济论文
生物论文
数学论文
物理论文
机械论文
新闻传播论文
音乐舞蹈论文
法学论文
文学论文
材料科学
英语论文
日语论文
化学论文
自动化
管理论文
艺术论文
会计论文
土木工程
电子通信
食品科学
教学论文
医学论文
体育论文
论文下载
研究现状
任务书
开题报告
外文文献翻译
文献综述
范文
二分查找算法与随机二分查找算法的时间复杂度研究(3)
2 算法简介及时间复杂度分析
2.1 经典二分查找算法
将一个给定的元素x与一个已排序数组A[low…high]的中间元素做比较,如果x < A[mid],这里mid = floor((low+high)/2),则不考虑A[mid…high],而是对A[low…mid-1]重复实施相同的方法。类似地,如果x > A[mid],则放弃A[low…mid],并对A[mid+1…high] 重复实施相同的方法。如此,我们就可以使用递归方法来实现这一搜索算法(伪代码如下):
输入:n个元素的升序数组A[1…n]和元素x
输出:若x=A[j], 1£j£n, 则输出j, 否则输出0
low←1; high ←n; j←0
while(low £high) and (j=0)
mid ← ë( low+high)/2û
if x=A[mid] then j ←mid
else if x<A[mid] then high ←mid-1
else low ←mid+1
end while
return j
对于上面的经典二分查找的伪代码,我们作简要分析:为了求出算法的执行时间,我们计算元素间的比较次数,因为这是一个基本运算,也就是说,算法的执行时间与完成元素间比较次数是成比例的。我们将假定每个if-else-else比较当作一次比较来计算,首先注意到当n=0时,即数组是空的,则算法不执行任何元素的比较。当n=1时,else的部分将被执行,并且若x≠A[mid],算法将对空数组递归。从而得到当n=1时,算法刚好执行一次比较。如果n>1,则存在两种可能;当x=A[mid]时,则算法仅仅执行一次比较;否则算法所需的比较次数是1加上由递归调用数组的前或后一半所执行的比较次数。如果设C(n)表示算法对大小为n的数组在最坏的情况下所执行的比较次数,则C(n)可表示为如下的递推式:
1 若n=1
1+C( ) 若n≥2
设对某个整数k≥2,满足2 ≤n≤2 。展开上述递推式,可得到
共3页:
上一页
1
2
3
下一页
上一篇:
ASP.net大学生个人学习生活管理软件的开发
下一篇:
JSP图书馆座位管理系统设计+文献综述
基于Apriori算法的电影推荐
基于PageRank算法的网络数据分析
基于神经网络的验证码识别算法
python基于决策树算法的球赛预测
加密与解密算法的研究【1931字】
一種删除准则的NOMA资源联...
vc++几种排序算法演示软件实现
C#学校科研管理系统的设计
承德市事业单位档案管理...
国内外图像分割技术研究现状
公寓空调设计任务书
AT89C52单片机的超声波测距...
10万元能开儿童乐园吗,我...
医院财务风险因素分析及管理措施【2367字】
志愿者活动的调查问卷表
神经外科重症监护病房患...
中国学术生态细节考察《...