0

0

C++STL算法binary_search在有序序列应用

P粉602998670

P粉602998670

发布时间:2025-09-08 10:50:01

|

298人浏览过

|

来源于php中文网

原创

binary_search用于有序序列中高效查找元素,时间复杂度O(log n),使用前需确保序列已排序,通常配合sort使用,支持自定义比较函数,适用于vector、array等随机访问容器,关联容器推荐用成员函数find。

c++stl算法binary_search在有序序列应用

在C++标准模板库(STL)中,binary_search 是一个非常实用的算法,用于判断某个值是否存在于已排序的序列中。它的时间复杂度为 O(log n),比线性查找更高效,但前提是容器中的元素必须是有序的。

使用前提:序列必须有序

binary_search 只适用于有序序列。如果序列未排序,结果是未定义的,可能导致错误的判断。通常在使用前需调用 sort 算法进行排序。

示例:
  • 使用 std::sort(vec.begin(), vec.end()) 对 vector 排序
  • 之后才能安全使用 binary_search 查找元素

基本用法

binary_search 定义在头文件 gorithm> 中,函数原型如下:

bool binary_search(Iterator first, Iterator last, const T& value);

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

Fortran基本用法小结 WORD版
Fortran基本用法小结 WORD版

本文档主要讲述的是Fortran基本用法小结;希望能够给学过C但没有接触过Fortran的同学带去一些帮助。Fortran是一种编程语言。它是世界上最早出现的计算机高级程序设计语言,广泛应用于科学和工程计算领域。FORTRAN语言以其特有的功能在数值、科学和工程计算领域发挥着重要作用。Fortran奠定了高级语言发展的基础。现在Fortran在科研和机械方面应用很广。希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看

下载

它返回一个布尔值:true 表示找到元素,false 表示未找到。

代码示例:
#include 
#include 
#include 

int main() {
    std::vector nums = {5, 2, 8, 1, 9};
    std::sort(nums.begin(), nums.end()); // 排序

    if (std::binary_search(nums.begin(), nums.end(), 8)) {
        std::cout << "8 存在于序列中\n";
    } else {
        std::cout << "8 不存在\n";
    }
    return 0;
}

支持自定义比较函数

如果序列是按特定规则排序的(如降序),需要传入相应的比较函数或函数对象,确保 binary_search 使用相同的排序规则。

  • 函数原型支持第四个参数:binary_search(first, last, value, comp)
  • comp 应返回 true 当第一个参数小于第二个参数
降序示例:
std::vector nums = {9, 8, 5, 2, 1};
// 无需重新排序,已是降序

bool found = std::binary_search(nums.begin(), nums.end(), 5, std::greater());
if (found) {
    std::cout << "找到了 5\n";
}

适用容器类型

binary_search 可用于任何支持随机访问迭代器的有序容器,如:

  • std::vector
  • std::array
  • std::deque
  • 原生数组(配合指针)

注意:关联容器如 std::setstd::map 内部本身就是有序的,它们提供了成员函数 findcount,通常比使用 std::binary_search 更高效。

基本上就这些。只要记住:用 binary_search 前先排序,保持比较逻辑一致,就能高效判断元素是否存在。

相关专题

更多
counta和count的区别
counta和count的区别

Count函数用于计算指定范围内数字的个数,而CountA函数用于计算指定范围内非空单元格的个数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

193

2023.11.20

sort排序函数用法
sort排序函数用法

sort排序函数的用法:1、对列表进行排序,默认情况下,sort函数按升序排序,因此最终输出的结果是按从小到大的顺序排列的;2、对元组进行排序,默认情况下,sort函数按元素的大小进行排序,因此最终输出的结果是按从小到大的顺序排列的;3、对字典进行排序,由于字典是无序的,因此排序后的结果仍然是原来的字典,使用一个lambda表达式作为key参数的值,用于指定排序的依据。

380

2023.09.04

c语言const用法
c语言const用法

const是关键字,可以用于声明常量、函数参数中的const修饰符、const修饰函数返回值、const修饰指针。详细介绍:1、声明常量,const关键字可用于声明常量,常量的值在程序运行期间不可修改,常量可以是基本数据类型,如整数、浮点数、字符等,也可是自定义的数据类型;2、函数参数中的const修饰符,const关键字可用于函数的参数中,表示该参数在函数内部不可修改等等。

520

2023.09.20

c语言const用法
c语言const用法

const是关键字,可以用于声明常量、函数参数中的const修饰符、const修饰函数返回值、const修饰指针。详细介绍:1、声明常量,const关键字可用于声明常量,常量的值在程序运行期间不可修改,常量可以是基本数据类型,如整数、浮点数、字符等,也可是自定义的数据类型;2、函数参数中的const修饰符,const关键字可用于函数的参数中,表示该参数在函数内部不可修改等等。

520

2023.09.20

golang map内存释放
golang map内存释放

本专题整合了golang map内存相关教程,阅读专题下面的文章了解更多相关内容。

73

2025.09.05

golang map相关教程
golang map相关教程

本专题整合了golang map相关教程,阅读专题下面的文章了解更多详细内容。

25

2025.11.16

golang map原理
golang map原理

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

37

2025.11.17

java判断map相关教程
java判断map相关教程

本专题整合了java判断map相关教程,阅读专题下面的文章了解更多详细内容。

32

2025.11.27

php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

150

2025.12.31

热门下载

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

精品课程

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

共32课时 | 3.2万人学习

Go语言实战之 GraphQL
Go语言实战之 GraphQL

共10课时 | 0.8万人学习

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

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