python【问题描述】输入一批从小到大的整数,以回车结束,存入列表中。再输入一个要查找的数,输出此数在列表中的索引位置,如不存在则输出-1。用扫描法或者二分法都可以 【输入形式】 【输出形式】 【样例输入输出】 Enter a number (<Enter> to quit):1 Enter a number (<Enter> to quit):2 Enter a number (<Enter> to quit):5 Enter a number (<Enter> to quit):6 Enter a number (<Enter> to quit):8 Enter a number (<Enter> to quit):10 Enter a number (<Enter> to quit): Enter a number searched:8 4 【样例说明】8在列表索引值为4的位置上 【评分标准】
时间: 2024-02-12 22:03:47 浏览: 66
请看下面的 Python 代码实现,其中使用了二分法查找:
```python
def binary_search(lst, target):
"""
二分法查找
:param lst: 有序列表
:param target: 要查找的目标数
:return: 目标数在列表中的索引位置,如果不存在则返回 -1
"""
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 -1
lst = []
while True:
num = input("Enter a number (<Enter> to quit): ")
if num == "":
break
else:
lst.append(int(num))
target = int(input("Enter a number searched: "))
result = binary_search(lst, target)
print(result)
```
在上述代码中,我们首先定义了一个 `binary_search` 函数,用于实现二分法查找目标数在列表中的索引位置。`left` 和 `right` 变量表示二分法的左右边界,初始时分别为列表的第一个元素和最后一个元素。然后,我们在 while 循环中不断缩小查找范围,直到找到目标数或者确定该数不存在于列表中。
在主程序中,我们通过循环输入一批从小到大的整数,以回车结束,存入列表中。再输入一个要查找的数,调用 `binary_search` 函数查找该数在列表中的索引位置,最后输出结果。如果目标数不存在于列表中,则输出 -1。
阅读全文