用c++ 实现 二分查找 前提是先把数组排列好

#include<iostream>
using namespace std;

// 可以递归调用的二分查找
int search(const int(&a)[10], int start, int end, int target)
{
// 基准情况:目标值超出范围,或者start > end,说明没有找到
if (target < a[start] || target > a[end] || start > end)
return -1;

// 取二分的中间坐标
int mid = (start + end) / 2;
// 比较中间值和目标值的大小
if (a[mid] == target)
return mid; // 找到了
else if (a[mid] > target)
return search(a, start, mid - 1, target); // 比目标值大,在更小的部分找
else
return search(a, mid + 1, end, target); // 比目标值小,在更大的部分找
}

int main()
{
int arr[10] = { 1,2,3,4,5,6,9,12,25,38 };

int key = 22;
int size = sizeof(arr) / sizeof(arr[0]);
int result = search(arr, 0, size - 1, key);

result == -1
? cout << "在数组中没有找到" << key << "!" << endl
: cout << "在数组中找到" << key << ",索引下标为:" << result << endl;

cin.get();
}

posted on   songsonglailou  阅读(14)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示