java upperbound_lower_bound与upper_bound()用法笔记

lower_bound与upper_bound()用法笔记

原创正牌东风 最后发布于2018-07-23 21:10:23 阅读数 965 收藏

展开

头文件

#include

using namespace std;

lower_bound与upper_bound()查找一个元素的时间复杂度为O(log n);

一、数组中的lower_bound与upper_bound()

对于从小到大排序好的整型数组a[n],假设有a[5]={0,2,3,3,5},对于要查找的整型数val,有

1)int i=lower_bound(a,a+n,val)-a;

其中i返回值为数组中元素值大于等于val的第一个下标,相应地,如果数组中所有元素的值都小于val,则返回值为数组最后一个元素下标的下一个下标(另外一种说法是:i的返回值为val可以插入a数组的最前的位置)。

val=2,i=1;

val=3,i=2;

val=6,i=5;

2) int i=upper_bound(a,a+n,val)-a;

其中i返回值为数组中元素值大于val的第一个下标,相应地,如果数组中所有元素的值都小于等于val,则返回值为数组最后一个元素下标的下一个下标(另外一种说法是:i的返回值为val可以插入a数组的最后的位置)。

val=2,i=2;

val=3,i=4;

val=6,i=5;

————————————————

版权声明:本文为CSDN博主「正牌东风」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/clz16251102113/java/article/details/81173950

对lower_bound的理解

原创imagination_wdq 最后发布于2018-12-03 13:34:00 阅读数 1001 收藏

展开

头文件:algorithm

lower_bound()返回值是一个迭代器,返回指向比key大的第一个值的位置

第一个用法:返回值的下标。

#include

#include

using namespace std;

int main()

{

int a[]={1,2,3,4,5,7,8,9};

printf("%d",lower_bound(a,a+8,6)-a);

//如果key是最大的,则返回值为数组的长度

return 0;

}

第二个用法:返回值的大小。

#include

#include

using namespace std;

int main()

{

int a[]={1,2,3,4,5,7,8,9};

printf("%d",*lower_bound(a,a+8,6));

//如果key是最大的,返回值为0

return 0;

}

————————————————

版权声明:本文为CSDN博主「imagination_wdq」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/qq_42391248/java/article/details/84760477

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 ST 语言中,`upper_bound` 和 `lower_bound` 也用于在一个已排序的序列中查找指定值的位置。它们的使用方法与 C++ 中的函数类似,但有一些细节需要注意。 1. `upper_bound` 函数 `upper_bound` 函数的语法如下: ``` pos:= upper_bound(array, value [, compare]) ``` 其中,`array` 是要查找的已排序数组,`value` 是要查找的特定值,`compare` 是一个可选参数,用于指定比较函数。返回值 `pos` 是一个整数,它表示第一个大于 `value` 的元素的位置。 需要注意的是,与 C++ 不同,ST 语言中的 `upper_bound` 函数返回的位置是从 0 开始计数的,而不是从 1 开始。此外,如果 `value` 大于等于数组中的所有元素,则返回数组长度。 下面是一个使用 `upper_bound` 函数的例子: ``` array := [1, 2, 2, 3, 4, 5] pos := upper_bound(array, 2) // pos 的值为 3,表示第一个大于 2 的元素在数组中的位置为 3 ``` 2. `lower_bound` 函数 `lower_bound` 函数的语法与 `upper_bound` 函数类似,但它返回的是第一个大于等于 `value` 的元素的位置。即,如果数组中存在元素等于 `value`,则返回第一个等于 `value` 的元素的位置;否则返回第一个大于 `value` 的元素的位置。 ``` pos:= lower_bound(array, value [, compare]) ``` 需要注意的是,ST 语言中的 `lower_bound` 函数也返回从 0 开始计数的位置,而不是从 1 开始。如果 `value` 大于数组中的所有元素,则返回数组长度。 以下是一个使用 `lower_bound` 函数的例子: ``` array := [1, 2, 2, 3, 4, 5] pos := lower_bound(array, 2) // pos 的值为 1,表示第一个大于等于 2 的元素在数组中的位置为 1 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值