二分法查找

'''
二分法查找
前提:必须是一个已经排好序的列表
核心:不断的除以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

原文地址:https://www.cnblogs.com/wenm1128/p/12095604.html