【发布时间】:2019-03-18 21:10:53
【问题描述】:
开始阅读有关使用此示例代码的基本数据结构和算法的书,
def binary_search(list, item):
low = 0
high = len(list)-1 #sets upper range to length of provided list
while low <= high:
mid = (low + high) #why does (low + high) give me middle of list?
guess = list[mid]
if guess == item:
return mid
if guess > item:
high = mid - 1
else:
low = mid + 1
return None
my_list = [1,3,5,7,9]
print binary_search(my_list,3)
print binary_search(my_list,-1)
虽然我理解树的概念但不明白为什么
mid = (low + high) #why does (low + high) give me middle of list?
低+高不会给我与高相同的价值吗?我不应该需要低 + 高 / 2 来找到中点吗?但它工作得很好?
【问题讨论】:
-
不应该是(低+高)//2 ?
-
你说得对,它应该是
mid = (low + high)//2。它仍然有效,因为它不需要中间,但运行时间更长,因为它只通过完整列表而不是“跳过”是 -
"//" 2 解决了我在 python shell 中取回疯狂小数的另一个问题,谢谢!在这一点上,我需要回去看看我以前从未真正使用过的运算符。
标签: python binary-search