我對Python很新,並試圖學習算法,我想問爲什麼它在邏輯上錯誤,如果我在查看列表時使用low < hi
,正確的邏輯操作是low <= hi
,什麼是它防止的邊緣情況。瞭解while循環python
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
@Juggernaut - 這裏沒有猜謎遊戲。他沒有得到一個例外,他問的算法的邏輯。正如答案指出的那樣,如果你改變了邏輯,你不會得到一個例外,但你會遇到更糟糕的情況:錯誤的答案。 –