递归算法实现二分查找c++
时间: 2023-08-21 18:03:09 浏览: 105
递归算法实现二分查找C++.docx
递归算法实现二分查找的C++代码如下:
```cpp
#include <iostream>
using namespace std;
int binarySearch(int arr[], int low, int high, int target) {
if (low <= high) {
int mid = low + (high - low) / 2;
if (arr[mid] == target) {
return mid;
}
else if (arr[mid] > target) {
return binarySearch(arr, low, mid - 1, target);
}
else {
return binarySearch(arr, mid + 1, high, target);
}
}
return -1; // 如果未找到目标元素,返回-1
}
int main() {
int arr[] = { 2, 5, 8, 12, 16, 23, 38, 56, 72, 91 };
int n = sizeof(arr) / sizeof(arr[0]);
int target = 23;
int result = binarySearch(arr, 0, n - 1, target);
if (result == -1) {
cout << "目标元素未找到" << endl;
}
else {
cout << "目标元素位于索引 " << result << endl;
}
return 0;
}
```
以上代码使用递归实现了二分查找算法。在 `binarySearch` 函数中,首先判断数组的边界是否合法,如果不合法则返回 -1。然后计算中间元素的索引,与目标元素进行比较。如果中间元素等于目标元素,则返回中间索引;如果中间元素大于目标元素,则在左半部分继续查找;如果中间元素小于目标元素,则在右半部分继续查找。最后,如果未找到目标元素,则返回 -1。
在 `main` 函数中,我们定义了一个有序数组 `arr`,并指定目标元素为 23。然后调用 `binarySearch` 函数进行查找,并根据返回值输出查找结果。
运行以上代码,输出结果为:
```
目标元素位于索引 5
```
这表明目标元素 23 位于数组中的索引 5。
阅读全文