先输入一个顺序数值列表,再需要查找的数,使用二分法查找。若找到输出此数在列表中的索引,若没有找到输出“此数不存在”。
- 0 1 2 3 4 5 6 7 8 9
- 1
数值 1 在列表中的索引为 1
- 1 2 3 4 5 6 7 8 9
- 0
此数不存在
- 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("此数不存在")
以上代码全为本人亲自手敲,可能有一些错误和不足之处,如有更好的方法和建议,欢迎您在评论区友善讨论。