请编写一个python程序,能够通过基于递归实现的二分查找法从其中快速找到指定的数值,并返回对应数值的索引。注意:待查找序列中的数值为升序排列。
时间: 2024-10-27 13:03:15 浏览: 46
当然可以。下面是一个基于Python的二分查找算法的简单实现,它接受一个有序列表和一个目标值作为输入,如果找到了目标值,就返回其索引,否则返回-1。
```python
def binary_search(arr, low, high, target):
if high >= low:
mid = (high + low) // 2
# 如果中间元素正好是我们正在找的目标
if arr[mid] == target:
return mid
# 如果中间元素大于目标,则在左半部分继续查找
elif arr[mid] > target:
return binary_search(arr, low, mid - 1, target)
# 否则在右半部分查找
else:
return binary_search(arr, mid + 1, high, target)
else:
# 如果已查找范围为空,说明目标不在数组中
return -1
# 使用示例
arr = [2, 3, 4, 10, 40]
target = 10
result = binary_search(arr, 0, len(arr) - 1, target)
if result != -1:
print(f"目标 {target} 的索引是:{result}")
else:
print(f"{target} 不在数组中.")
```
在这个例子中,函数`binary_search`接收四个参数:排序后的数组`arr`、最低索引`low`、最高索引`high`以及目标值`target`。每次迭代,我们都将查找范围缩小一半,直到找到目标值或者查找范围变为零(表示目标不存在于数组中)。
阅读全文