二分查找是一种算法,它的输入是一个有序的元素列表。如果要查找的元素包含在列表中,二分查找返回它的位置,否则返回null。
# encoding: utf-8
def binary_search(list,item):
#通过low和high来跟踪在其中查找的列表部分
low=0
high=len(list)-1
#只要范围没有缩小到一个元素就检查中间的元素
while low<=high:
mid=int(low+high)
guess=list[mid]
#如果找到了元素就返回其位置
if guess==item:
return mid
#如果猜的数字大了就更改high的位置
if guess>item:
high=mid-1
#如果猜的数字小了就更改low的位置
else:
low=mid+1
#如果没有指定的元素就返回None
return None
if __name__ == "__main__":
my_list=[1,6,9,24,67,88]
location=binary_search(my_list,67)
location1=binary_search(my_list,200)
print("67所在位置为%d"%location)
print("200所在位置为%s"%location1)
#运行结果:
67所在位置为4
200所在位置为None