target
リストまたはタプル内の値、、のバイナリ検索を実行するために、次のコードを記述しましたcollection
。
def binary(collection, target):
"""Binary search
Takes a sorted list or tuple, collection, then searches for target
Returns -1 if item isn't found. """
length = len(collection)
minimum = 0
maximum = length - 1
while minimum <= maximum:
pivot = (minimum + maximum) // 2
if collection[pivot] is target:
return pivot
elif collection[pivot] > target:
minimum = pivot + 1
else:
maximum = pivot - 1
return -1
ご覧のとおり、にtarget
が見つからない場合collection
、関数は-1を返します。私が何をしたかに関係なく、関数は-1を返しました。
>>> test = [1, 2, 3, 4, 5, 6]
>>> binary(test, 5)
-1
>>> binary(test, 1)
-1
この問題の原因は何ですか?