按照由小到大的顺序输入15个整数,放在一个整型数组a[15]中,然后另起一行输入一个整数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“cannot find xxx”。
时间: 2023-06-02 20:03:39 浏览: 118
好的,我会尽力回答你的问题。根据你的要求,我可以帮你解决关于折半查找法的问题,以下是代码实现及注释:
```python
def binary_search(arr, n):
"""
二分查找函数,接收一个已排序的整型数组 arr 和一个待搜索的整数 n,
返回元素 n 在数组 arr 中的索引,如果不存在则返回 -1。
"""
left, right = 0, len(arr) - 1
while left <= right:
mid = (left + right) // 2
if arr[mid] == n:
return mid
elif arr[mid] < n:
left = mid + 1
else:
right = mid - 1
return -1
# 接收用户输入的 15 个整数并存入数组 a 中
a = []
for i in range(15):
a.append(int(input()))
# 将数组 a 进行排序,以便使用折半查找法
a.sort()
# 接收用户输入的待搜索整数 n
n = int(input())
# 调用二分查找函数 binary_search,在数组 a 中查找元素 n 的索引
index = binary_search(a, n)
# 判断是否存在元素 n
if index != -1:
print(f"该数在数组中的第 {index+1} 个位置。")
else:
print(f"cannot find {n}")
```
希望我的回答能够帮到你!如果你还有其他问题,欢迎继续提出。
阅读全文