注意点:
二分查找的对象必须是有序的
代码
data_list = [10,8,9,4,5,3,6,2,7,1]
new_list = sorted(data_list) # 将列表重新排序
print('排序后的列表是:',new_list)
low = 0 # 最小下标
high = len(new_list)-1 # 最大下标
# todo 获取查找目标
target = int(input('请输入查找目标:')) # 查找目标
while low <= high:
# todo 获取中间值的下标
middle = (low + high) // 2 # 中间值下标
# todo 目标值与中间值比较大小
# todo 目标值等于中间值
if target == new_list[middle]:
print('该目标值在列表中的下标为:',middle)
break # 如果找到跳出循环
# todo 目标值小于中间值,左子表查找,最大下标改变
elif target < new_list[middle]:
high = middle-1
# todo 目标值大于中间值,右子表查找,最小下标改变
elif target > new_list[middle]:
low = middle+1
else:
pass
运行结果