二分查找,递归

#include<stdio.h>
#include <iostream>
int a[10] = {1,2,3,4,5,6,7,8,9,10};



int binarySearch(int left,int right,int key)
{
    int middle = (left+right)/2;
   if(middle >= right && middle <= left)
        return -1;
    if(a[middle] == key)
        return middle;
    else if(a[middle] > key)
    {
        binarySearch(left,middle-1,key);
    }
    else
    {
        binarySearch(middle+1,right,key);
    }
}
int main()
{
    std::cout << binarySearch(0,9,2) << std::endl;
}

### C++ 中递归实现二分查找 在 C++ 中,递归方法可以用于高效地执行二分查找操作。此方法依赖于每次将搜索区间减半的原则,从而显著减少所需时间。 对于递归版本的二分查找,在给定有序数组 `arr[]` 和待查元素 `target` 的情况下,定义一个辅助函数 `binarySearchRecursive()` 来处理实际逻辑: ```cpp int binarySearchRecursive(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; // 若目标大于中部,则向右子数组继续寻找 if (arr[mid] < target) return binarySearchRecursive(arr, mid + 1, right, target); // 否则向左子数组继续寻找 return binarySearchRecursive(arr, left, mid - 1, target); } ``` 上述代码展示了完整的递归二分查找算法[^3]。当调用该函数时,初始参数应设置为整个数组范围 (`0` 到 `n-1`) ,其中 `n` 是数组长度。如果找到了匹配项,则返回其索引;如果没有找到,则最终会返回 `-1` 表明未发现目标值[^5]。 为了验证这个功能的工作情况,可以在主程序里测试它: ```cpp #include <iostream> using namespace std; // ... 上面定义的 binarySearchRecursive 函数 ... int main() { int arr[] = {2, 3, 4, 10, 40}; int n = sizeof(arr)/sizeof(arr[0]); int target = 10; int result = binarySearchRecursive(arr, 0, n-1, target); (result == -1) ? cout << "Element not present" : cout << "Element found at index " << result; return 0; } ``` 这段简单的例子演示了如何在一个预设好的升序排列的数据集中应用递归形式的二分查找技术。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值