使用递归实现二分查找算法
时间: 2023-07-24 21:20:02 浏览: 90
二分查找算法(Binary Search)是一种高效的查找算法,它可以在有序数组中快速查找指定元素。下面是使用递归实现二分查找算法的代码:
```python
def binary_search_recursive(arr, left, right, target):
if left <= right:
mid = (left + right) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
return binary_search_recursive(arr, mid + 1, right, target)
else:
return binary_search_recursive(arr, left, mid - 1, target)
else:
return -1
```
解释一下代码:
- `arr` 是一个有序的数组,`left` 和 `right` 分别表示数组的左右边界,`target` 是要查找的目标元素。
- 首先判断左右边界是否合法,如果左边界大于右边界,说明目标元素不存在于数组中,返回 -1。
- 否则计算中间位置 `mid`,如果中间位置的元素等于目标元素,直接返回 `mid`。
- 如果中间位置的元素小于目标元素,说明目标元素在右半部分,递归调用函数,在右半部分查找目标元素。
- 如果中间位置的元素大于目标元素,说明目标元素在左半部分,递归调用函数,在左半部分查找目标元素。
使用示例:
```python
arr = [1, 3, 5, 7, 9]
target = 5
index = binary_search_recursive(arr, 0, len(arr) - 1, target)
print(index) # 输出 2
```
这里在有序数组 `[1, 3, 5, 7, 9]` 中查找元素 `5`,返回的下标为 `2`。
阅读全文