二分查找法要求数据按序排列,要么升序。要么降序排列。
查找方法是先将列表中最中间的数据与要查找的数据进行比较,如果一致就停止查找,如果要查找数据比中间数据大,就向右重新开始进行二分查找,反之,数据比中间数据小,就向左进行二分查找。
二分查找的程序思路如下
假定将二分查找写成函数
要查找的列表是升序排列。
首先定义三个变量,分别命名为left,righr,mid
left=0
right=列表元素数-1
列表元素索引是0开始的,因此,最后一个元素索引是元素数-1
mid是最中间的元素索引
mid=(right-left)//2
接着是一个while循环,表达式是left<=right
如果最中间的元素是要查找的元素,就结束循环,如果要查找的数大于中间数,
left=mid+1
如果要查找的数比中间数小
right=mid-1
如果要查找的数不在列表中,返回值-1
python代码如下
def erfen(data,value):
left=0
right=len(data)-1
mid=(right-left)//2
while left<right:
if value==data[mid]:
return mid
elif value>data[mid]:
left=mid+1
else:
right=mid-1
return -1
二分查找法的算法复杂度是O(logn)