【问题描述】
用户由键盘分别输入一个元素升序的、无重复数字的整型列表 lst 和一个目标值 target ,搜索 target 是否在 lst 中。如果目标值存在,输出目标值索引下标(即列表 lst 索引),否则输出 not find。
【输入形式】
用户直接由键盘输入两个数据,具体形式为:
先输入一个列表类型的变量 lst:[-1,0,3,4,6,10,13,14]
在输入需要查找的目标值 target:13
【输出形式】
若目标值存在,则输出值的索引:6
若目标值不存在,则输出:not find
【样例输入】
[-1,0,3,4,6,10,13,14]
13
【样例输出】6
def binary_search(lst, target):
left, right = 0, len(lst) - 1
while left <= right:
mid = (left + right) // 2
if lst[mid] < target:
left = mid + 1
elif lst[mid] > target:
right = mid - 1
else:
return mid
return "not find"
lst = eval(input())
target = eval(input())
result = binary_search(lst, target)
print(result)