二分查找:C++ 库函数 upper_bound、lower_bound 和 binary_search

二分查找是一种在有序数组中查找特定元素的高效算法。在二分查找中,upper_bound、lower_bound 和 binary_search 是三个常用的操作,C++标准库也提供了原生 API,它们都利用了二分查找,但用于解决略微不同的问题。

介绍

binary_search

  • 定义:判断一个有序序列中是否存在指定的值。
  • 返回值:如果序列中存在该值,返回true;否则,返回false。
    用途:仅用于检查序列中是否包含某个特定的值,不提供该值的位置信息。

类似于 LeetCode704.二分查找,但是返回值是 bool 值。

lower_bound

  • 定义:在有序数组中找到第一个等于目标值的元素的位置。
  • 返回值:如果数组中存在一个或多个目标值,则 lower_bound 返回指向第一个目标值的迭代器。如果所有元素都小于目标值,则返回指向数组末尾的迭代器。
  • 用途:lower_bound 常用于查找数组中第一个等于目标值的元素的位置,或者获取可以插入该值而不破坏数组排序的位置。

upper_bound

  • 定义:在一个有序数组中找到第一个大于目标值的元素的位置。
  • 返回值:如果数组中存在目标值,则 upper_bound 返回指向第一个大于目标值的元素的迭代器。如果所有元素都不大于目标值则返回指向数组末尾的迭代器。
  • 用途:upper_bound 常用于确定一个范围,特别是当需要找出所有等于目标值的元素的范围时。

示例

假设有一个有序数组 arr = [1, 2, 4, 4, 5, 6 ,7],我们需要差中值为 4 的 lower_boundupper_boundlower_bound(4) 将返回指向第一个 4 的迭代器,即 arr[2]upper_bound(4) 将返回指向 5 的迭代器,即 arr[4]

接口

binary_search

bool
binary_search(_ForwardIterator __first, _ForwardIterator __last,
        c
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值