【发布时间】:2020-05-12 18:08:02
【问题描述】:
我正在阅读 Grokking Algorithms,这似乎是一本强烈推荐的书。我正在研究“二分搜索”的第一个算法,这个人使用两个“ifs”而不是“if”和“elif”。使用两个“ifs”会更好还是更快?
def binary_search(list, item):
low = 0
high = len(list) - 1
while low <= high:
mid = (low + high)
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]
【问题讨论】:
-
逻辑不同(或者如果那里没有
return就会不同)。当if为真时,elif保证不会运行。给定回报,它们是等价的。 -
顺便说一句,请参阅Why not upload images of code on SO when asking a question? -- 使用 cmets 注释的文本可被搜索引擎索引,具有辅助技术的人更容易访问,想要自己尝试代码的人可以复制/粘贴等。
-
我猜 mid 分配不正确,应该是 mid = (low + high)/2 或 mid = low + (high-low)/2。
标签: python python-3.x if-statement