lower_bound( ) 和 upper_bound( ) 的用法

含义

lower_bound( ) 和 upper_bound( ) 都是用二分查找在一个有序的数列中进行查询的

① 在从小到大的有序数列中

lower_bound(begin, end, num);
是从数组 begin 位置到 end - 1位置二分查找第一个大于等于num的数字,返回这个数字的地址,不存在则返回end。返回值减去begin即能得到数字在数组中的下标。

upper_bound(begin, end, num);
是从数组 begin 位置到 end - 1位置二分查找第一个大于num的数字,返回这个数字的地址,不存在则返回end。返回值减去begin即能得到数字在数组中的下标。

② 在从大到小的有序数组中

我们需要进行重载

lower_bound(begin, end, greater<type>());
是从数组 begin 位置到 end - 1位置二分查找第一个小于等于num的数字,返回这个数字的地址,不存在则返回end。返回值减去begin即能得到数字在数组中的下标。

upper_bound(begin, end, greater<type>());
是从数组 begin 位置到 end - 1位置二分查找第一个小于num的数字,返回这个数字的地址,不存在则返回end。返回值减去begin即能得到数字在数组中的下标。

应用

lower_bound( ) 和 upper_bound( ) 能在数组、vector等应用。

参考来源

https://blog.csdn.net/qq_40160605/article/details/80150252

发布了184 篇原创文章 · 获赞 24 · 访问量 2万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章