【发布时间】:2017-05-16 01:51:07
【问题描述】:
我创建了一个 len 100 的列表
li2 = list(range(100))
我使用下面的二进制搜索功能,带有一个计数器,但是需要 5 次搜索才能找到 50。应该在第一次尝试时找到它。 (100/2) = 50 li2[50] == 50
def binary_search(li,item):
low = 0
high = len(li)-1
trys = 0
while low<=high:
mid = int((low + high)/2)
guess = li[mid]
if guess == item:
return'Found',item, 'in', trys,'searches'
elif guess > item:
trys+=1
high = mid - 1
else:
trys+=1
low = mid + 1
return item,' not found', trys, ' searches attempted'
我跑binary_search(li2,50)
并在下方返回
('Found', 50, 'in', 5, 'searches')
【问题讨论】:
标签: python search binary counter