c++递归实现二分查找
作者:野牛程序员:2024-10-21 17:15:32 C++阅读 2696
c++递归实现二分查找
二分查找是一种高效的查找算法,适用于已排序的数组。该算法通过反复将搜索范围减半来查找目标值。具体步骤包括:
确定数组的中间元素。
如果中间元素等于目标值,查找成功。
如果目标值小于中间元素,继续在左半部分查找。
如果目标值大于中间元素,继续在右半部分查找。
重复以上步骤,直到找到目标值或范围为空。
该算法的时间复杂度为O(log n),相较于线性查找的O(n),效率更高。
以下是使用递归实现的二分查找的C++示例代码:
#include <iostream>
using namespace std;
int binarySearch(int arr[], int left, int right, int target) {
if (left > right) {
return -1; // 未找到
}
int mid = left + (right - left) / 2; // 防止溢出
if (arr[mid] == target) {
return mid; // 找到目标
}
else if (arr[mid] > target) {
return binarySearch(arr, left, mid - 1, target); // 在左半边查找
}
else {
return binarySearch(arr, mid + 1, right, target); // 在右半边查找
}
}
int main() {
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int size = sizeof(arr) / sizeof(arr[0]);
int target = 5;
int result = binarySearch(arr, 0, size - 1, target);
if (result != -1) {
cout << "元素找到,索引为:" << result << endl;
} else {
cout << "元素未找到。" << endl;
}
return 0;
}野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

