def bs(a, num):
low = 0
high = len(a) - 1
mid = int(high / 2)
while low<high: #当low == high 的时候查不到值那就不会存在了
if num < a[mid]:
high = mid
elif num > a[mid]:
low = mid+1 #这里不+1 查找的数在最后一位的时候会形成死循环 例如 7 8 int((7+8)/2)=7 则永远7 8 不能查找到数组的第8位
elif num == a[mid]:
return mid
else:
return -1
mid = int((high + low) / 2)
return -1
if __name__ == '__main__':
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
index = bs(a, -1)
print(index)
算法 - pyhton - 二分查找
最新推荐文章于 2024-06-11 09:15:00 发布