二分搜索也称折半搜索(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之和的一半(小数点后直接舍去)。
浙公网安备 33010602011771号