分别利用递归结构和循环结构实现二分查找算法
时间: 2024-10-16 18:04:22 浏览: 17
分别用递归和非递归方法实现二分查找算法 的完整程序
二分查找算法是一种在有序数组中查找特定元素的搜索算法,它通过反复将搜索区间缩小一半来进行查找。这里分别介绍一下递归和循环实现的二分查找过程:
**递归实现**:
```python
def binary_search_recursive(arr, target, low=0, high=None):
if high is None:
high = len(arr) - 1
if low <= high:
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)
# 如果目标不在数组内,返回 -1
return -1
```
**循环实现**:
```python
def binary_search_iterative(arr, target):
low, high = 0, len(arr) - 1
while low <= high:
mid = (low + high) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
low = mid + 1
else:
high = mid - 1
# 如果目标不在数组内,返回 -1
return -1
```
在这两个版本中,递归版通过不断调用自身来缩小查找范围,而循环版则使用while循环来控制这个过程。
阅读全文