C++STL二分搜索算法
Posted 机房日子青少年编程
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++STL二分搜索算法相关的知识,希望对你有一定的参考价值。
C++ STL中二分查找的函数有 3 个:
这三个函数的参数都有三个,分别是数据集合的左端点,数据集合的右端点,查找的值,注意这些左端点右端点是要求左闭右开原则的,就是和数学上的左闭右开区间[a, b)。
一个数组arr[]={4,10,11,30,69,70,96,100}设要插入数字3,9,101,pos为要插入的位置的下标
p = lower_bound( arr, arr+ 8, 3) - arr,p= 0.即arr数组的下标为0的位置。
p= lower_bound( arr, arr+ 8, 101) -arr, p= 8,即arr数组的下标为8的位置(但下标上限为7,所以返回最后一个元素的下一个元素)。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> t;
t.push_back(4);
t.push_back(25);
t.push_back(11);
t.push_back(48);
t.push_back(69);
t.push_back(72);
t.push_back(96);
t.push_back(100);
sort(t.begin(),t.end());
for(auto i:t)
cout<<i<<" ";
cout<<endl;
int low=lower_bound(t.begin(),t.end(),3)-t.begin();
int upp=upper_bound(t.begin(),t.end(),101)-t.begin();
cout<<low<<endl;
cout<<upp<<endl;
return 0; ;
}
运行结果:
以上是关于C++STL二分搜索算法的主要内容,如果未能解决你的问题,请参考以下文章
递归/回溯/深度优先搜索/广度优先搜索 /动态规划/二分搜索/贪婪算法