用递归和c++二分查找算法的设计
时间: 2024-10-14 10:17:10 浏览: 29
递归和二分查找算法结合起来可以创建一种高效查找有序数组的方法。二分查找,也称为折半查找,是一种分治策略的应用,它每次都将搜索范围减半,直到找到目标元素或者确定元素不在范围内。
在C++中设计一个递归版本的二分查找算法,我们需要这样步骤:
1. 定义一个函数`binarySearch`,接收三个参数:已排序的整数数组`arr`,目标值`target`,以及当前查找区间的起始索引`low`和结束索引`high`。
```cpp
int binarySearch(int arr[], int target, int low, int high) {
```
2. 检查基本情况:如果`low`大于`high`,说明目标不存在于数组中,返回-1表示未找到;若`low`等于`high`,则直接比较`arr[low]`和`target`。
3. 递归情况:计算中间索引`mid`,然后判断`arr[mid]`是否等于`target`。若相等,返回`mid`;若`arr[mid]`小于`target`,在右半部分(`mid + 1`到`high`)递归查找;若`arr[mid]`大于`target`,在左半部分(`low`到`mid - 1`)递归查找。
4. 结构完整版的递归二分查找函数:
```cpp
int binarySearch(int arr[], int target, int low, int high) {
if (low > high)
return -1;
int mid = low + (high - low) / 2;
if (arr[mid] == target)
return mid;
else if (arr[mid] < target)
return binarySearch(arr, target, mid + 1, high);
else
return binarySearch(arr, target, low, mid - 1);
}
```
阅读全文