lower_bound和upper_bound

来源:互联网 发布:比特彗星tcp端口阻塞 编辑:程序博客网 时间:2024/06/16 11:10



lower_bound查找“大于或等于x的第一个位置”

upper_bound查找“大于等于x的最后一个位置”



用法案例:

#include#includeusing namespace std;int main(void){int a[7];for(int i=0;i<7;i++)cin>>a[i];                // a[7]={1,9,5,3,10,7,0};sort(a,a+7);              // 必须先将数组排序才能使用lower_bound和up_bound int x;while(cin>>x){int p=lower_bound(a,a+7,x)-a;  // p返回第一次出现大于或等于x的第一个位置的下标 cout<



STL中的源代码:
//二分法稍作改动int lower_bound(int *array, int size, int key){    int first = 0, middle;    int half, len;    len = size;    while(len > 0) {        half = len >> 1;        middle = first + half;        if(array[middle] < key) {                 first = middle + 1;                      len = len-half-1;        }        else            len = half;    }    return first;}





原创粉丝点击