ながら、私は何であるか、それは論理的に間違っている私はlow < hi
を使用する場合は、リスト上で探していたときに、なぜ、正しい論理演算がlow <= hi
でお願いしたかったですそれが防止しているエッジケース。我々は「< =」を使用して代わりにさ理解私は<em>のPython</em>に非常に新しいですとアルゴリズムを習得しようとしている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 - ここで推測ゲームはありません。彼は例外を得ていない、彼はアルゴリズムのロジックについて尋ねている。答えが指摘しているように、ロジックを変更すると例外はありませんが、さらに悪いことが起こります。間違った答えです。 –