二分查找是一種算法,它的輸入是一個有序的元素列表。如果要查找的元素包含在列表中,二分查找返回它的位置,否則返回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
#如果猜的數(shù)字大了就更改high的位置
if guess>item:
high=mid-1
#如果猜的數(shù)字小了就更改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)
#運行結(jié)果:
67所在位置為4
200所在位置為None