这里是二进制搜索的代码,想知道如果没有匹配值,问题是上限应该定位在小或小的+1?下界应该位于小或小-1,是否正确?谢谢。使用二进制搜索找到上限和下限值
def binary_search(my_list, key):
assert my_list == sorted(my_list)
large = len(my_list) -1
small = 0
while (small <= large):
mid = (small + large) // 2)
# print small, mid, large, " - ", my_list[mid], "~", key
if my_list[mid] < key:
small = mid + 1
elif my_list[mid] > key:
large = mid - 1
else:
return mid
raise ValueError
嗯......问题是什么? – Paul
@Paul,感谢您的评论,我只是编辑我的问题,以便更清楚我在问什么。 :) –