试编写一个程序完成:有15个数按从下到大的顺序存放在一个数组中.输入一个数,要求折半查找法找出该数是数组中第几个元素的值.如果该数不在数组中,输出“不在表。
时间: 2023-06-15 16:08:17 浏览: 148
以下是使用 Python 编写的程序,实现折半查找法:
```python
def binary_search(arr, x):
low = 0
high = len(arr) - 1
while low <= high:
mid = (low + high) // 2
if arr[mid] == x:
return mid
elif arr[mid] < x:
low = mid + 1
else:
high = mid - 1
return -1
# 测试
arr = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29]
x = int(input("请输入要查找的数:"))
result = binary_search(arr, x)
if result == -1:
print("不在表。")
else:
print(f"{x} 在数组中的位置为:{result+1}")
```
程序首先定义了一个二分查找函数 `binary_search()`,接受两个参数:一个有序数组 `arr` 和要查找的数 `x`。函数使用 while 循环进行查找,每次将数组范围缩小一半,直到找到目标数或者数组被缩小为空。如果找到目标数,则返回该数在数组中的下标;否则返回 -1。
程序接下来定义一个有序数组 `arr`,并接受用户输入要查找的数 `x`。将数组 `arr` 和 `x` 传递给函数 `binary_search()` 进行查找,将返回值存储在变量 `result` 中。最后根据 `result` 的值判断是否找到目标数,并输出相应的结果。
阅读全文