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 。展开上述递推式,可得到
上一篇:ASP.net大学生个人学习生活管理软件的开发
下一篇:JSP图书馆座位管理系统设计+文献综述

基于Apriori算法的电影推荐

基于PageRank算法的网络数据分析

基于神经网络的验证码识别算法

python基于决策树算法的球赛预测

加密与解密算法的研究【1931字】

一種删除准则的NOMA资源联...

vc++几种排序算法演示软件实现

C#学校科研管理系统的设计

承德市事业单位档案管理...

国内外图像分割技术研究现状

公寓空调设计任务书

AT89C52单片机的超声波测距...

10万元能开儿童乐园吗,我...

医院财务风险因素分析及管理措施【2367字】

志愿者活动的调查问卷表

神经外科重症监护病房患...

中国学术生态细节考察《...