使用二分法查数。
先输入一个顺序数值列表,再输入需要查找的数,使用二分法查找。若找到输出此数在列表中的索引,若没有找到输出“此数不存在”。
输入样例1:
0 1 2 3 4 5 6 7 8 9
1
输出样例1:
数值 1 在列表中的索引为 1
输入样例2:
1 2 3 4 5 6 7 8 9
0
输出样例2:
此数不存在
def binary_search(list, target):
#定义起始,结束索引
low = 0
high = len(list) - 1
#起始索引如果小于结束索引则表明查找处于正常状态
while low <= high:
#每次二分均值向下取整
mid = (low + high) // 2
#等于目标则表示找到
if list[mid] == target:
return mid
#小于目标则缩小前半范围
elif list[mid] < target:
low = mid + 1
#大于目标则缩后前半范围
else:
high = mid - 1
#循环退出则表示无法找到
return -1
nums_list = [int(num) for num in input("请输入一个顺序数值列表(以空格分隔):").split(' ')]
target = int(input("请输入需要查找的数:"))
target_index = binary_search(nums_list, target)
if target_index != -1:
print(f"数值 {target} 在列表中的索引为 {target_index}")
else:
print("此数不存在")
以上代码全为本人亲自手敲,可能有一些错误和不足之处,如有更好的方法和建议,欢迎您在评论区友善讨论。