二分查找:
def BiSearch(li:[],key):
length = len(li)
high = length - 1
low = 0
mid = (high + low) // 2
#首尾特殊处理
if key == li[0]:
return 0
if key == li[-1]:
return length-1
while mid < length-1 and mid > 0:
if key > li[mid]:
low = mid
elif key < li[mid]:
high = mid
else:
return mid
mid = (high + low) // 2
return -1