Python输入一批从小到大的整数,以回车结束,存入列表中。再输入一个要查找的数,输出此数在列表中的索引位置,如不存在则输出-1。用扫描法或者二分法都可以
时间: 2023-12-03 20:46:57 浏览: 54
py代码-输入一个包含若干整数的列表,输出这些整数的乘积。 例如输入[-2, 3,4],输出-24。
以下是用扫描法实现的代码:
```python
num_list = []
while True:
num = input("请输入一个从小到大的整数(输入q结束输入):")
if num == "q":
break
num_list.append(int(num))
search_num = int(input("请输入要查找的数:"))
for i in range(len(num_list)):
if num_list[i] == search_num:
print("找到了,索引位置为:", i)
break
else:
print("未找到,索引位置为:-1")
```
以下是用二分法实现的代码:
```python
num_list = []
while True:
num = input("请输入一个从小到大的整数(输入q结束输入):")
if num == "q":
break
num_list.append(int(num))
search_num = int(input("请输入要查找的数:"))
left = 0
right = len(num_list) - 1
while left <= right:
mid = (left + right) // 2
if num_list[mid] == search_num:
print("找到了,索引位置为:", mid)
break
elif num_list[mid] > search_num:
right = mid - 1
else:
left = mid + 1
else:
print("未找到,索引位置为:-1")
```
以上两种方法都可以实现对一个从小到大排列的整数列表进行查找,并输出其索引位置。其中,二分法的时间复杂度为 $O(\log n)$,扫描法的时间复杂度为 $O(n)$,因此对于比较大的列表,二分法的效率更高。
阅读全文