写个python程序 第2题:假设已有列表a,其n个数值型元素已经从小到大排序完成。现输入另一数值x,现要求使用递归的二分法搜索x,如果x存在,则打印输出x在列表a中的下标,否则打印输出-1。
时间: 2024-02-03 09:14:25 浏览: 61
以下是Python程序实现:
```python
def binary_search(a, x, low, high):
if low > high:
return -1
mid = (low + high) // 2
if a[mid] == x:
return mid
elif a[mid] > x:
return binary_search(a, x, low, mid - 1)
else:
return binary_search(a, x, mid + 1, high)
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
x = 5
result = binary_search(a, x, 0, len(a) - 1)
if result != -1:
print(f"{x}在列表a中的下标为{result}")
else:
print("-1")
```
代码解释:
首先定义了一个函数 `binary_search`,它接收四个参数:列表 `a`,要查找的数值 `x`,查找范围的最小下标 `low` 和最大下标 `high`。函数通过递归实现二分法查找,如果找到了 `x`,则返回它在列表 `a` 中的下标 `mid`,否则根据在 `mid` 左侧或右侧继续递归查找。
然后定义了一个有序列表 `a` 和要查找的数值 `x`,并调用 `binary_search` 函数进行查找。如果返回结果不为 -1,则说明找到了 `x`,打印输出它在列表 `a` 中的下标;否则打印输出 -1。
阅读全文