有关lower

    科技2022-08-06  116

    对lower_bound函数来说,它寻找的是第一个满足条件“值大于等于x”的元素的位置;

    而对于upper_bound函数来说,它寻找的是第一个满足条件“值大于x”的元素的位置。

    lower_bound函数:

    //a[]为递增序列,x为欲查询的数,函数返回第一个大于等于x的元素位置 //二分上下界为左闭右闭的[left,right],传入的初值为[0,n] int lower_bound(int a[],int left,iint right,int x) { int mid; //mid为left和right的中点 while(left<right) //对[left,right]来说,left==right意味着找到唯一位置 { mid=(left+right)/2; //取中点 if(a[mid]>=x) //中间的数大于等于x right=mid; //往左子区间[left,mid]查找 else //中间的数小于x left=mid+1; //往右子区间[mid+1,right]查找 } return left; //返回找出来的位置 }

    upper_bound函数:

    //a[]为递增序列,x为欲查询的数,函数返回第一个大于x的元素位置 //二分上下界为左闭右闭的[left,right],传入的初值为[0,n] int upper_bound(int a[],int left,iint right,int x) { int mid; //mid为left和right的中点 while(left<right) //对[left,right]来说,left==right意味着找到唯一位置 { mid=(left+right)/2; //取中点 if(a[mid]>x) //中间的数大于x right=mid; //往左子区间[left,mid]查找 else //中间的数小于等于x left=mid+1; //往右子区间[mid+1,right]查找 } return left; //返回找出来的位置 }

     

    Processed: 0.009, SQL: 8