当前位置: 首页 > news >正文

云南网站建设工具seo诊断网站

云南网站建设工具,seo诊断网站,网站推广关键词排名,日本做的视频网站有哪些二分查找是一种经典的搜索算法,广泛应用于有序数据集中。它允许在大型数据集中高效地查找目标元素,减少了搜索的时间复杂度。本文将介绍在 C 和 Python 中内置的二分查找函数,让二分查找变得更加容易。 c lower_bound() 、upper_bound 定义…

二分查找是一种经典的搜索算法,广泛应用于有序数据集中。它允许在大型数据集中高效地查找目标元素,减少了搜索的时间复杂度。本文将介绍在 C++ 和 Python 中内置的二分查找函数,让二分查找变得更加容易。

c++

lower_bound() 、upper_bound

定义在<algorithm>头文件中,
lower_bound 和 upper_bound 是 C++ STL 中与二分查找相关的两个非常有用的函数。它们都用于在有序容器中查找元素的位置。下面我将通过一个示例来详细讲解它们的用法。

假设我们有一个有序的整数数组 arr,如下所示:

#include <iostream>
#include <vector>
#include <algorithm>int main() {std::vector<int> arr = {1, 2, 2, 3, 4, 4, 4, 5, 6, 7, 8, 9};int target = 4;// 使用 lower_bound 查找目标值的第一个出现位置std::vector<int>::iterator lower = std::lower_bound(arr.begin(), arr.end(), target);// 使用 upper_bound 查找目标值的最后一个出现位置的下一个位置std::vector<int>::iterator upper = std::upper_bound(arr.begin(), arr.end(), target);// 输出结果std::cout << "数组中 " << target << " 的出现位置:" << std::endl;std::cout << "lower_bound 的结果:" << std::distance(arr.begin(), lower) << std::endl;std::cout << "upper_bound 的结果:" << std::distance(arr.begin(), upper) << std::endl;return 0;
}

在上述示例中,我们使用了 lower_bound 和 upper_bound 函数来查找目标值 4 在数组中的位置。下面是这两个函数的详细解释:

  • lower_bound:它返回一个迭代器,指向数组中第一个不小于目标值的元素。在我们的示例中,lower 将指向数组中第一个 4 的位置。

  • upper_bound:它返回一个迭代器,指向数组中第一个大于目标值的元素。在我们的示例中,upper 将指向数组中第一个大于 4 的元素位置。

请注意,如果目标值在数组中不存在,lower 和 upper 的差值将为零,因为它们将指向同一个位置。这两个函数在查找有序容器中的范围时非常有用,帮助我们精确定位元素的位置。

python

bisect_left

bisect.bisect_left(a, x, lo=0, hi=len(a), *, key=None)
bisect.bisect_left 函数在 Python 的 bisect 模块中用于在有序序列中查找目标值的插入位置,它接受四个参数:

a:表示有序序列,通常是一个列表。

x:表示要查找的目标值。

lo(可选):表示搜索范围的起始位置,默认为 0。

hi(可选):表示搜索范围的结束位置,默认为序列的长度。

下面是一个示例,演示了 bisect.bisect_left 函数的用法:

import bisectarr = [1, 2, 3, 4, 4, 4, 5, 6, 7, 8, 9]
target = 4# 在整个序列中查找目标值的插入位置
index = bisect.bisect_left(arr, target)
print(f"在整个序列中查找 {target} 的插入位置:{index}")# 在指定范围内查找目标值的插入位置
lo = 2  # 搜索范围的起始位置
hi = 7  # 搜索范围的结束位置
index_range = bisect.bisect_left(arr, target, lo, hi)
print(f"在范围 [{lo}, {hi}] 内查找 {target} 的插入位置:{index_range}")

在上述示例中,首先我们在整个序列中查找目标值 4 的插入位置,然后在指定范围 [2, 7] 内查找 4 的插入位置。这两个插入位置的结果将告诉你如果将目标值插入到序列中,它应该出现在哪个位置。

bisect_right

bisect.bisect_right 函数与 bisect.bisect_left 函数非常类似,都用于在有序序列中查找目标值的插入位置。它们的区别在于,bisect_right 返回的位置是目标值插入后应该位于的右侧位置,而 bisect_left 返回的位置是目标值插入后应该位于的左侧位置。

http://www.hkea.cn/news/14550/

相关文章:

  • 企业网站建设推广实训报告网站友链查询源码
  • 网站皮肤样板站长工具站长之家
  • 我想看b站哪个平台可以免费打广告
  • 教育学校网站做成都关键词优化服务
  • 老网站不要了做新站需要怎么处理如何注册网址
  • 钟祥网站建设核心关键词举例
  • 做网站好吗百度资源搜索资源平台
  • 小榄做网站百度seo快速排名优化
  • 备案一个网站为什么需要域名搜索引擎优化seo方案
  • vps 网站 需要绑定域名吗青岛seo精灵
  • 产品介绍网站html源码网络推广公司哪家做得好
  • 网站 公安 也要备案吗青柠影院免费观看电视剧高清
  • ps毕业设计做网站界面免费制作logo的网站
  • 网站首页设计如何做google推广
  • 网站设置保存登录密码怎么取消郑州网站推广公司电话
  • 平面设计素材网站排名互动营销案例100
  • 我的网站为什么打不开seo指的是什么意思
  • 阿里网站年费续费怎么做分录广州谷歌seo公司
  • 百度推广关键词规划师免费的seo教程
  • p2p网上贷款网站建设方案.docx西安网站建设比较好的公司
  • 建设公司网站开发方案南京百度快速排名优化
  • 网站建设的作用有哪些方面网站建设方案书
  • 成都房地产上市公司有哪些衡水网站优化推广
  • 珠海网站建设及优化互联广告精准营销
  • 用cms建网站seo系统推广
  • 黄页网品种大全2021搜索排名优化公司
  • 北京中交建设公司网站百度广告推广怎么收费
  • 企业手机端网站源码想做seo哪里有培训的
  • 自己做网站开发黄冈网站推广软件视频下载
  • 沈阳做网站最好的公司百度搜索引擎下载免费