【发布时间】:2017-06-15 00:24:12
【问题描述】:
我对Python还很陌生,正在尝试学习算法,我想问一下为什么我在查看列表时使用low < hi会出现逻辑错误,正确的逻辑操作是@987654322 @,它正在防止的边缘情况是什么。
def binary_search(input_array, value):
"""Your code goes here."""
#O(log(n))
low = 0
hi = len(input_array) - 1
while low <= hi: #why cant it be low < hi
mid = (low + hi)//2
if input_array[mid] == value:
return mid
elif input_array[mid] < value:
print(low, hi)
low = mid + 1
else:
hi = mid - 1
return -1
test_list = [1,3,9,11,15,19,29]
test_val1 = 25
test_val2 = 15
print(binary_search(test_list, test_val1))
print(binary_search(test_list, test_val2))
【问题讨论】:
-
考虑编辑问题并附加您遇到的引发异常。猜谜游戏在这里被严厉否决:D
-
@Juggernaut - 这里没有猜谜游戏。他没有得到例外,他在询问算法的逻辑。正如答案所指出的,如果你改变逻辑,你不会得到异常,但会得到更糟糕的结果:错误的答案。
标签: python python-3.x data-structures