def bi_search(arr, t):
if not arr or t < arr[0] or t > arr[-1]: # 边界情形
return None
begin, end = 0, len(arr) - 1
while begin <= end:
mid = begin + (end - begin) // 2 # 防止大数相加溢出
if t == arr[mid]:
return mid
elif t < arr[mid]:
end = mid - 1
elif t > arr[mid]:
begin = mid + 1
return None
arr1 = [1, 2, 2, 4, 5, 7, 7, 8, 9, 9, 10]
arr2 = [2]
arr3 = [2, 2]
arr4 = [] # 不能进行索引
for arr in [arr1, arr2, arr3, arr4]:
print(bi_search(arr, 10))
区间思维