二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。
其输入是一个有序的元素列表(必须是有序的),如果查找的元素包含在列表中,二分查找返回其位置,否则返回NULL
比如说有一个1-100的数字,我随机的选择其中一个数字(假设为10),你需要以最少的次数猜到我所选择的数字,每次猜测后,我会告诉你大了,小了,对了。
def B_search(listvar,value):
low = 0 #开始
high=len(listvar)-1 #结束
while low <= high:
mid=int((low+high)/2) #计算中间值的下标
guess = listvar[mid] #取出中间值
if guess == value:
return guess
elif guess > value: #如果预测的数字大于输入的数字,high的值为中间值去减1,舍去大于的数
high = mid -1
else:
low = mid+1
return None
listvar=[1,2,3,4,5,6,7,8,9,10,12]
print(B_search(listvar,9))