C++二分查找(折半查找)算法实例详解
发布时间 - 2026-01-11 01:05:03 点击率:次本文实例讲述了C++二分查找(折半查找)算法。分享给大家供大家参考,具体如下:

二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。
因此,折半查找方法适用于不经常变动而查找频繁的有序列表。
二分查找思想
首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;
否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。
重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。
基本算法C语言实现代码:
int binary_search(int arr[], int len, int elem)
{
int low = 0;
int high = len - 1;
while (low <= high)
{
int mid = (low + high) / 2;
if (elem == arr[mid]){ //相等,返回mid
return mid;
}
else if (elem > arr[mid]){
low = mid + 1; //元素比区间中间元素大,取区间中间元素的下一个元素作为新区间起始位置
}
else{
high = mid - 1; //元素比区间中间元素小,取区间中间元素的上一个元素作为新区间结束位置
}
}
return -1;
}
添加检测是否是已排好序数组的程序实例
#include <iostream>
using namespace std;
int binary_search(int arr[], int len, int elem)
{
int low = 0;
int high = len - 1;
while (low <= high)
{
int mid = (low + high) / 2;
if (elem == arr[mid]){
return mid;
}
else if (elem > arr[mid]){
low = mid + 1;
}
else{
high = mid - 1;
}
}
return -1;
}
//检测是否排好序
int is_sorted(int arr[], int len)
{
int sorted = 1;
for (int i = 0; i < len - 1; i++)
{
sorted = sorted && arr[i] <= arr[i + 1];
}
return sorted;
}
int main()
{
int arr[] = { 1, 3, 5, 7, 9, 11, 12, 15, 18, 23, 25, 26 };
int len = sizeof(arr) / sizeof(int);
int pos;
int sorted = is_sorted(arr, len);
if (sorted)
{
pos = binary_search(arr, len, 26);
cout << "pos = " << pos << endl;
}
system("pause");
}
运行结果:
pos = 11 请按任意键继续. . .
希望本文所述对大家C++程序设计有所帮助。
# C++
# 二分查找
# 折半查找
# 算法
# 查找算法之二分查找的C++实现
# C++二分查找算法实例
# C++ 中二分查找递归非递归实现并分析
# 二分查找算法在C/C++程序中的应用示例
# python中二分查找法的实现方法
# python实现二分查找算法
# Pythonic版二分查找实现过程原理解析
# Python如何实现的二分查找算法
# c++与python实现二分查找的原理及实现
# 升序
# 适用于
# 给大家
# 不存在
# 速度快
# 请按
# 所述
# 不成功
# 程序设计
# 讲述了
# 性能好
# sizeof
# pre
# 前一子表
# 后一子表
# pos
# class
# binary_search
# arr
# int
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
🚀拖拽式CMS建站能否实现高效与个性化并存?
如何登录建站主机?访问步骤全解析
Win11怎么开启自动HDR画质_Windows11显示设置HDR选项
北京的网站制作公司有哪些,哪个视频网站最好?
高防服务器租用首荐平台,企业级优惠套餐快速部署
高端智能建站公司优选:品牌定制与SEO优化一站式服务
iOS中将个别页面强制横屏其他页面竖屏
韩国服务器如何优化跨境访问实现高效连接?
Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制
Laravel Seeder填充数据教程_Laravel模型工厂Factory使用
如何在云服务器上快速搭建个人网站?
Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优
Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤
Laravel如何实现API资源集合?(Resource Collection教程)
Laravel如何使用Eloquent进行子查询
如何用狗爹虚拟主机快速搭建网站?
Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权
Laravel怎么使用Intervention Image库处理图片上传和缩放
JavaScript如何实现错误处理_try...catch如何捕获异常?
简单实现Android验证码
Laravel如何配置任务调度?(Cron Job示例)
Java遍历集合的三种方式
详解jQuery停止动画——stop()方法的使用
如何快速启动建站代理加盟业务?
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
魔方云NAT建站如何实现端口转发?
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
ChatGPT 4.0官网入口地址 ChatGPT在线体验官网
JavaScript中如何操作剪贴板_ClipboardAPI怎么用
如何用PHP快速搭建高效网站?分步指南
Laravel Octane如何提升性能_使用Laravel Octane加速你的应用
如何在阿里云香港服务器快速搭建网站?
如何获取免费开源的自助建站系统源码?
软银砸40亿美元收购DigitalBridge 强化AI资料中心布局
php打包exe后无法访问网络共享_共享权限设置方法【教程】
Linux后台任务运行方法_nohup与&使用技巧【技巧】
Win11怎么设置默认图片查看器_Windows11照片应用关联设置
JavaScript如何实现类型判断_typeof和instanceof有什么区别
php485函数参数是什么意思_php485各参数详细说明【介绍】
java ZXing生成二维码及条码实例分享
如何在万网自助建站平台快速创建网站?
手机软键盘弹出时影响布局的解决方法
Laravel如何实现本地化和多语言支持?(i18n教程)
VIVO手机上del键无效OnKeyListener不响应的原因及解决方法
Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】
Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】
Bootstrap整体框架之CSS12栅格系统
Laravel用户密码怎么加密_Laravel Hash门面使用教程
微信小程序 canvas开发实例及注意事项

