二分查找和lower_bound & upper_bound
来源:互联网 发布:常用统计分析软件 编辑:程序博客网 时间:2024/05/16 15:43
问题:
对于事先排好序的非递减数列,查找其中值为val的下标,如果val不存在则返回-1
二分查找,数学中有利用二分法求近似值的方法也是这个原理
数列是非递减的,只需步步尝试逼近所需要的值
#include<bits/stdc++.h>using namespace std;int BinarySearch(const int A[],int val,int N){ int left,right,mid; left = 0,right = N-1; while (left <= right) { mid = (left+right)>>1; if (A[mid] < val) left = mid + 1; else if (A[mid] > val) right = mid - 1; else return mid; } return -1;}int main(){ int A[8] = {-5,2,4,7,9,22,122,250}; cout<<BinarySearch(A,7,8)<<endl; cout<<BinarySearch(A,27,8)<<endl; return 0;}
lower_bound(first,last,val)返回非递减数列中[first,last),左开右闭区间内第一个大于等于val的位置
用法:int p = lower_bound(a,a+n,x) - a;
upper_bound(first,last,val)返回非递减数列中[first,last),左开右闭区间内第一个大于val的位置
用法:int p = upper_bound(a,a+n,x) - a;
若找不到则返回最后last的位置
#include<bits/stdc++.h>using namespace std;int main(){ int a[8] = {-5,2,4,7,9,22,122,250}; int p1 = lower_bound(a,a+8,7) - a;//返回3(可取等) int p2 = upper_bound(a,a+8,7) - a;//返回4 cout<<"p1 = "<<p1<<endl; cout<<"p2 = "<<p2<<endl; int p3 = lower_bound(a,a+8,300) - a;//返回8(未找到) cout<<"p3 = "<<p3<<endl; return 0;}
0 0
- 二分查找和lower_bound & upper_bound
- 查找和二分查找 lower_bound upper_bound
- 二分查找,lower_bound,upper_bound
- 【lower_bound】【upper_bound】二分查找
- STL 二分查找 upper_bound和lower_bound用法
- 二分查找:binary_search、lower_bound和upper_bound的实现
- 二分查找及lower_bound与upper_bound
- 二分查找—lower_bound 、upper_bound 、binary_search
- STL中的二分查找--lower_bound/upper_bound/binary_search
- STL之二分查找(binary_search(),lower_bound(),upper_bound() )
- STL中的二分查找,lower_bound();与upper_bound();
- STL之二分查找(binary_search(),lower_bound(),upper_bound() )
- STL之二分查找(binary_search(),lower_bound(),upper_bound() )
- STL之二分查找(binary_search(),lower_bound(),upper_bound() )
- STL 二分查找(binary_search(),lower_bound(),upper_bound() )
- 二分搜索:lower_bound, upper_bound
- 关于二分(upper_bound,lower_bound)
- 二分 lower_bound,upper_bound
- mysql 主从原理
- 【计算机算法】几种常见排序算法
- hdu4310Hero(简单贪心)
- 如何阻止Android的反编译apk
- Octave基础操作Ⅰ
- 二分查找和lower_bound & upper_bound
- 【C#】StringBuilder和string对比
- git on server(ssh)深入剖析,github提供服务原理
- JAVA网络编程
- Android-自定义手势识别-复杂手势识别
- flex布局 与 iconfont
- mysql 主从复制配置
- 求1+2+3+...+n java
- Android studio 在粘贴复制后so包边灰了