算法思路:
假设有一个有序列表:[1, 23, 34, 36, 51, 62, 88, 99]
请问数字 51 是否在此列表中,如果在它的索引值为多少?
首先我们先取中间值,如果没有找到。比较中间值大于还是小于数字51
如果中间值小于51,那么左边缩减一半排除[1,23,34,36]
然后中间值大于51,那么右边缩减一半排除[88,99]
list1 = [1, 23, 34, 36, 51, 62, 88, 99]
count = 0
number = 51
left = 0
right = len(list1)-1
while left <= right:
middle = (left+right)//2
count += 1
if number > list1[middle]:
left = middle+1
elif number < list1[middle]:
right = middle-1
else:
print(f"数字已找到,用了{count}次")
break
else:
print(f"数字没有找到")