Python二分查找无下标的递归实现
时间: 2024-03-29 20:33:07 浏览: 51
python二分查找算法的递归实现方法
5星 · 资源好评率100%
Python中的二分查找是一种高效的查找算法,可以在有序数组中快速定位目标元素的位置。下面是Python中无下标的递归实现:
```python
def binary_search(arr, target):
return binary_search_recursive(arr, target, 0, len(arr) - 1)
def binary_search_recursive(arr, target, low, high):
if low > high:
return -1
mid = (low + high) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
return binary_search_recursive(arr, target, mid + 1, high)
else:
return binary_search_recursive(arr, target, low, mid - 1)
```
这段代码中,`binary_search`函数是对外的接口函数,它调用`binary_search_recursive`函数进行递归查找。`binary_search_recursive`函数接收一个有序数组`arr`、目标元素`target`、查找范围的起始位置`low`和结束位置`high`作为参数。
在每一次递归调用中,首先判断`low`是否大于`high`,如果是,则表示查找范围为空,返回-1表示未找到目标元素。否则,计算中间位置`mid`,并与目标元素进行比较。如果相等,则返回中间位置`mid`。如果中间元素小于目标元素,则在右半部分继续递归查找;如果中间元素大于目标元素,则在左半部分继续递归查找。
如果递归调用过程中找到目标元素,则会返回其下标;如果未找到,则会返回-1。
阅读全文