python输入一批从小到大的整数,以回车结束,存入列表中。再输入一个要查找的数,输出此数在列表中的索引位置,如不存在则输出-1。用扫描法或者二分法都可以
时间: 2024-02-12 11:04:25 浏览: 55
好的,这是一个比较常见的问题,下面是使用扫描法的 Python 代码实现:
```python
nums = input("请输入一批从小到大的整数,以回车结束:").split()
nums = [int(num) for num in nums] # 将输入的字符串转换为整数列表
target = int(input("请输入要查找的数:"))
index = -1 # 初始化索引为-1,表示未找到
for i in range(len(nums)):
if nums[i] == target:
index = i # 找到目标值,更新索引
break
print("目标数在列表中的索引位置为:", index)
```
另外,如果使用二分法查找,则代码如下所示:
```python
nums = input("请输入一批从小到大的整数,以回车结束:").split()
nums = [int(num) for num in nums] # 将输入的字符串转换为整数列表
target = int(input("请输入要查找的数:"))
left, right = 0, len(nums) - 1
index = -1 # 初始化索引为-1,表示未找到
while left <= right:
mid = (left + right) // 2
if nums[mid] == target:
index = mid # 找到目标值,更新索引
break
elif nums[mid] < target:
left = mid + 1
else:
right = mid - 1
print("目标数在列表中的索引位置为:", index)
```
以上两种方法都可以实现对一个有序整数列表的查找,其中二分法的时间复杂度更低,是 O(log n) 级别的,扫描法的时间复杂度是 O(n) 级别的。
阅读全文