二分查找
简介
二分查找是一种算法,它要处理的元素列表必须是个有序。因为二分查找每次都会通过比较中间那个数与要求的数的大小,来舍弃一般的列表。如果要查找的元素包含在列表中,二分查找返回其位置;否则返回null。
例子
从1到100中选定一个数,然后你来猜测。你每次猜测后,我只会告诉你大了、小了或正确。(假设选定的是75)
(1)针对这个例子,假如从1开始猜的话,那么需要75次才会猜对。
(2)如果使用二分查找的话,我们第一个猜的是50,回答为小了。这时候就会取50到100这个列表的中间数75,回答为正确。
通过例子可以看到二分查找在处理这种问题上是很方便的。
代码实例
def binary_search(list,item): #初始化最小值和最大值 low=0 high=len(list)-1 #判断中间值是不是目标值 #当列表中只剩下一个元素后停止 while low <=high: mid=int((low + high)/2) guess=list[mid] #如果是目标值,则停止返回目标值 if guess==item: return mid #如果中间值比目标值大则使用中间值左边的列表 elif guess>item: high=mid-1 #中间值比目标值小,使用右边的列表 else: low=mid+1 return None #测试 my_list=[1,3,5,7,9] my_item=7 b=binary_search(my_list,3) print(b)