二分检索函数lower_bound()和upper_bound()

二分检索函数lower_bound()和upper_bound()

一、说明

头文件:<algorithm>

二分检索函数lower_bound()和upper_bound()
lower_bound():找到大于等于某值的第一次出现
upper_bound():找到大于某值的第一次出现
必须从小到大排序后才能用
内部查找方式为二分查找,二分查找必定需要排序

返回值为地址

二、代码及结果

 /*
二分检索函数lower_bound()和upper_bound()
lower_bound():找到大于等于某值的第一次出现
upper_bound():找到大于某值的第一次出现
必须从小到大排序后才能用
内部查找方式为二分查找,二分查找必定需要排序
返回值为地址
*/
#include <iostream>
#include <algorithm>
#include <string>
using namespace std; int main(){ int a[]={,,,,,,};
sort(a,a+);//省略掉排序规则的形式,默认从小到大
//sort(a,a+7,less<int>());//用系统的排序规则,从小到大
//sort(a,a+7,greater<int>());//用系统的排序规则,从大到小
for(int i=;i<;i++){
cout<<a[i]<<" "<<&a[i]<<endl;
}
cout<<endl;
/*
这个lower_bound要从小到大排序才正确,
如果是从大到小,或者不排序,还是输出的从小到大排序好后的位置
*/
int *p=lower_bound(a,a+,);//用lower_bound找大于等于2的第一次出现
cout<<p<<endl;
cout<<*p<<endl;
int *p1=upper_bound(a,a+,);//用upper_bound找大于等于2的第一次出现
cout<<p1<<endl;
cout<<*p1<<endl; return ;
}

二分检索函数lower_bound()和upper_bound()

上一篇:操作cookie篇


下一篇:100道JS构造函数面试题