#二分查找,在numbers中找数
numbers=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,20,21,22,23,25,100,101,111,125,256,2223]
# 超前需要numbers由小到大排序
# 二分查找
num=[]
def gogo(key,numbers):
global num
n=0
print("搜索的数为:",key)
fro=0 #搜索的头
lss=len(numbers)-1 #搜索的尾
while fro<=lss:
# 内部的过程
print("搜索区间为:",end="")
for i in range(lss-fro+1):
print(numbers[i+fro],"",end="")
print("")
n+=1
mid = int((fro + lss) / 2) # 搜索的中间
print("中间值为:",numbers[mid])
if numbers[mid]<key: #如果中值小于搜索的值则取中值右部搜索
fro=mid+1
elif numbers[mid]>key: #如果中值大于搜索的值则取中值左部搜索
lss=mid-1
else:
num.append(n)
return mid #成功匹配就输出
return -1
for i in numbers:
gogo(i, numbers)
print("搜索次数:",num)