i信息学奥赛

加入QQ群:1025629106,或关注微信公众号:i信息学奥赛,获取更多学习资源。

导航

二分搜索

Posted on 2018-05-01 08:18  shnoip  阅读(451)  评论(0)    收藏  举报

二分搜索也称折半搜索(Binary Search),它是一种效率较高的搜索方法。但是,折半搜索要求线性表必须采用顺序存储结构

,而且表中元素按关键字有序排列。

对含有n个元素的数组执行线性搜索以及二分搜索时,最坏的情况下的比较运算的次数分别如下:

元素数  线性搜索  二分搜索
100         100次           7次
10000      10000次       14次
1000000   1000000次    20次

线性搜索在最坏的情况下要比较n次,二分搜索大概需要log以2为底的n次。由于二分搜索每进行一次比较搜索范围就会减半,

因此很容易推导出其计算效率为O(logn)。

BinarySearch(A,key)
  left=0
  right=n
  while left<=right
    mid=(left+right)/2
    if (A(mid)==key) return mid
    else if (key<A[mid]) right=mid
         else left=mid+1
  return NOT_FOUND

left指示搜索范围开头的元素,right指示末尾元素的后一个元素。mid是left与right之和的一半(小数点后直接舍去)。