0

0

C++数组查找方法 线性二分查找实现

P粉602998670

P粉602998670

发布时间:2025-08-26 11:48:02

|

310人浏览过

|

来源于php中文网

原创

线性查找从头遍历数组比较元素,找到则返回索引,否则返回-1;二分查找要求有序数组,通过比较中间值缩小范围,时间复杂度O(log n),效率更高。

c++数组查找方法 线性二分查找实现

在C++中,数组查找常用的方法有线性查找和二分查找。线性查找适用于无序数组,时间复杂度为O(n);二分查找效率更高,时间复杂度为O(log n),但要求数组必须有序。下面分别介绍这两种方法的实现方式。

线性查找实现

线性查找从数组的第一个元素开始,逐个比较目标值与数组元素,直到找到匹配项或遍历完整个数组。

实现步骤:

  • 遍历数组中的每一个元素
  • 如果当前元素等于目标值,返回其索引
  • 如果遍历结束仍未找到,返回-1表示未找到
示例代码:
#include 
using namespace std;

int linearSearch(int arr[], int size, int target) { for (int i = 0; i < size; ++i) { if (arr[i] == target) { return i; // 返回找到的索引 } } return -1; // 未找到 }

int main() { int arr[] = {5, 3, 8, 1, 9, 2}; int size = sizeof(arr) / sizeof(arr[0]); int target = 1; int result = linearSearch(arr, size, target); if (result != -1) { cout << "元素在索引 " << result << " 处找到。" << endl; } else { cout << "元素未找到。" << endl; } return 0; }

二分查找实现

二分查找通过不断缩小查找范围,每次将中间元素与目标值比较,决定向左或右继续查找。

立即学习C++免费学习笔记(深入)”;

实现前提:数组必须是有序的(升序或降序)。

网龙b2b仿阿里巴巴电子商务平台
网龙b2b仿阿里巴巴电子商务平台

本系统经过多次升级改造,系统内核经过多次优化组合,已经具备相对比较方便快捷的个性化定制的特性,用户部署完毕以后,按照自己的运营要求,可实现快速定制会费管理,支持在线缴费和退费功能财富中心,管理会员的诚信度数据单客户多用户登录管理全部信息支持审批和排名不同的会员级别有不同的信息发布权限企业站单独生成,企业自主决定更新企业站信息留言、询价、报价统一管理,分系统查看分类信息参数化管理,支持多样分类信息,

下载

实现逻辑:

  • 设置左边界left = 0,右边界right = size - 1
  • 计算中间位置mid = left + (right - left) / 2(防止溢出)
  • 比较arr[mid]与target
  • 若相等,返回mid;若target更小,搜索左半部分;否则搜索右半部分
  • 重复直到left
示例代码:
#include 
using namespace std;

int binarySearch(int arr[], int size, int target) { int left = 0; int right = size - 1;

while (left <= right) {
    int mid = left + (right - left) / 2;

    if (arr[mid] == target) {
        return mid;
    } else if (arr[mid] < target) {
        left = mid + 1;
    } else {
        right = mid - 1;
    }
}
return -1;  // 未找到

}

int main() { int arr[] = {1, 2, 3, 5, 8, 9}; // 有序数组 int size = sizeof(arr) / sizeof(arr[0]); int target = 5; int result = binarySearch(arr, size, target); if (result != -1) { cout

使用STL中的查找方法

C++标准库提供了便捷的查找函数,可简化代码。

  • std::find:用于线性查找,适用于任意数组或容器
  • std::binary_search:判断元素是否存在(返回bool)
  • std::lower_bound:返回第一个不小于target的迭代器,可用于获取索引
示例代码:
#include 
#include 
using namespace std;

int main() { int arr[] = {1, 2, 3, 5, 8, 9}; int size = sizeof(arr) / sizeof(arr[0]); int target = 5;

// 使用 binary_search 判断是否存在
bool found = binary_search(arr, arr + size, target);
if (found) {
    cout zuojiankuohaophpcnzuojiankuohaophpcn "元素存在。" zuojiankuohaophpcnzuojiankuohaophpcn endl;
}

// 使用 lower_bound 获取索引
int* pos = lower_bound(arr, arr + size, target);
if (*pos == target) {
    cout zuojiankuohaophpcnzuojiankuohaophpcn "索引为:" zuojiankuohaophpcnzuojiankuohaophpcn (pos - arr) zuojiankuohaophpcnzuojiankuohaophpcn endl;
}
return 0;

}

基本上就这些。线性查找简单直接,适合小数组或无序数据;二分查找效率高,适合大而有序的数组。根据实际需求选择合适的方法。

相关专题

更多
云朵浏览器入口合集
云朵浏览器入口合集

本专题整合了云朵浏览器入口合集,阅读专题下面的文章了解更多详细地址。

20

2026.01.20

Java JVM 原理与性能调优实战
Java JVM 原理与性能调优实战

本专题系统讲解 Java 虚拟机(JVM)的核心工作原理与性能调优方法,包括 JVM 内存结构、对象创建与回收流程、垃圾回收器(Serial、CMS、G1、ZGC)对比分析、常见内存泄漏与性能瓶颈排查,以及 JVM 参数调优与监控工具(jstat、jmap、jvisualvm)的实战使用。通过真实案例,帮助学习者掌握 Java 应用在生产环境中的性能分析与优化能力。

29

2026.01.20

PS使用蒙版相关教程
PS使用蒙版相关教程

本专题整合了ps使用蒙版相关教程,阅读专题下面的文章了解更多详细内容。

162

2026.01.19

java用途介绍
java用途介绍

本专题整合了java用途功能相关介绍,阅读专题下面的文章了解更多详细内容。

120

2026.01.19

java输出数组相关教程
java输出数组相关教程

本专题整合了java输出数组相关教程,阅读专题下面的文章了解更多详细内容。

41

2026.01.19

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

10

2026.01.19

xml格式相关教程
xml格式相关教程

本专题整合了xml格式相关教程汇总,阅读专题下面的文章了解更多详细内容。

14

2026.01.19

PHP WebSocket 实时通信开发
PHP WebSocket 实时通信开发

本专题系统讲解 PHP 在实时通信与长连接场景中的应用实践,涵盖 WebSocket 协议原理、服务端连接管理、消息推送机制、心跳检测、断线重连以及与前端的实时交互实现。通过聊天系统、实时通知等案例,帮助开发者掌握 使用 PHP 构建实时通信与推送服务的完整开发流程,适用于即时消息与高互动性应用场景。

23

2026.01.19

微信聊天记录删除恢复导出教程汇总
微信聊天记录删除恢复导出教程汇总

本专题整合了微信聊天记录相关教程大全,阅读专题下面的文章了解更多详细内容。

172

2026.01.18

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Django 教程
Django 教程

共28课时 | 3.3万人学习

Excel 教程
Excel 教程

共162课时 | 12.6万人学习

MongoDB 教程
MongoDB 教程

共17课时 | 2.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号