'''
二分法查找
前提:必须是一个已经排好序的列表
核心:不断的除以2
s=[1,5,7,9,12,34]
要查找的值:key=5
min =0
max = len(s)-1
center =int((min+max)/2)
每次找中间,用key跟中间元素比较,
如果比中间元素大,那么跟新min的值
如果比中间元素小,那么更新max的值
如果等于中间元素,则找到了
'''
#代码实现
s=[1,5,6,7,9,12,34] def brainy_search(arr,key): min = 0 max = len(arr)-1 if key in arr: while True: center =int((min+max)/2) if key >arr[center]: min =center+1 elif key <arr[center]: max =center-1 elif key == arr[center]: print("%s在列表中的位置是:%s" %(key,center)) return key else: print("%s不在列表中!" %key) print(brainy_search(s,5)) print(brainy_search(s,2))
执行结果:
E:pytest>py -3 a.py
5在列表中的位置是:1
5
2不在列表中!
None