码迷,mamicode.com
首页 > 其他好文 > 详细

lower_bound( ) 与 upper_bound( )

时间:2020-03-14 20:16:36      阅读:52      评论:0      收藏:0      [点我收藏+]

标签:class   begin   方式   strong   大于   c++   code   排列   str   

lower_bound( ) 与 upper_bound( )

这两个函数是用二分查找的方式,在一个排好序的数组中进行查找,返回值是地址。

如果数组为从小到大的顺序排列的话:

  • lower_bound :lower_bound( begin,end,num),在begin到end-1之间,二分查找第一个大于或等于num的数字,不存在返回end

  • upper_bound :upper_bound( begin,end,num),在begin到end-1之间,二分查找第一个大于num的数字,不存在返回end

如果数组为从大到小的顺序排列的话,则需要重载:

  • lower_bound ( begin,end,num,greater() ),在begin到end-1之间二分查找第一个小于或等于num的数字,不存在返回end
  • upper_bound ( begin,end,num,greater() ),在begin到end-1之间二分查找第一个小于或等于num的数字,不存在返回end

因为返回值是地址,所以一般再减去begin,获得要寻找的数字的下标

int pos = lower_bound ( arr , arr + length , num ) -arr ;

lower_bound( ) 与 upper_bound( )

标签:class   begin   方式   strong   大于   c++   code   排列   str   

原文地址:https://www.cnblogs.com/Salty-Fish/p/12493661.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!