当前位置:首页 C++ > 正文

c++递归实现二分查找

作者:野牛程序员:2024-10-21 17:15:32 C++阅读 1994
c++递归实现二分查找

二分查找是一种高效的查找算法,适用于已排序的数组。该算法通过反复将搜索范围减半来查找目标值。具体步骤包括:

  1. 确定数组的中间元素。

  2. 如果中间元素等于目标值,查找成功。

  3. 如果目标值小于中间元素,继续在左半部分查找。

  4. 如果目标值大于中间元素,继续在右半部分查找。

  5. 重复以上步骤,直到找到目标值或范围为空。

该算法的时间复杂度为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
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
  • c++
  • 最新推荐

    热门点击