首页 > 其他分享 >lower_bound( )和upper_bound( )的常见用法

lower_bound( )和upper_bound( )的常见用法

时间:2023-11-14 11:25:38浏览次数:37  
标签:upper begin end int lower bound num 数组

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() 是有等的

在从大到小的排序数组中,重载 lower_bound()upper_bound()

lower_bound( begin,end,num,greater<type>() ) :从数组的 begin 位置到 end-1 位置二分查找第一个小于或等于 num 的数字,找到返回该数字的地址,不存在则返回 end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。

upper_bound( begin,end,num,greater<type>() ):从数组的begin位置到end-1位置二分查找第一个小于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标

#include<bits/stdc++.h>
using namespace std;
const int maxn=100000+10;
const int INF=2*int(1e9)+10;
#define LL long long
int cmd(int a,int b){
	return a>b;
}
int main(){
	int num[6]={1,2,4,7,15,34}; 
	sort(num,num+6);                           //按从小到大排序 
	int pos1=lower_bound(num,num+6,7)-num;    //返回数组中第一个大于或等于被查数的值 
	int pos2=upper_bound(num,num+6,7)-num;    //返回数组中第一个大于被查数的值
	cout<<pos1<<" "<<num[pos1]<<endl;
	cout<<pos2<<" "<<num[pos2]<<endl;
	sort(num,num+6,cmd);                      //按从大到小排序
	int pos3=lower_bound(num,num+6,7,greater<int>())-num;  //返回数组中第一个小于或等于被查数的值 
	int pos4=upper_bound(num,num+6,7,greater<int>())-num;  //返回数组中第一个小于被查数的值 
	cout<<pos3<<" "<<num[pos3]<<endl;
	cout<<pos4<<" "<<num[pos4]<<endl;
	return 0;	
} 

标签:upper,begin,end,int,lower,bound,num,数组
From: https://www.cnblogs.com/martian148/p/17831172.html

相关文章

  • Invalid bound statement (not found)原因
    我犯的错误resources下直接创建的xml,没有创建mapper文件夹,所以导致找不到xml文件修改前修改后然后就解决了网上搜到的几种https://blog.csdn.net/kwppwk/article/details/131832124......
  • celery flower通过nginx部署 静态文件css js
    nginx添加以下配置  location/flower{proxy_passhttp://127.0.0.1:5555;proxy_set_headerHost$host;proxy_set_headerX-Real-IP$remote_addr;proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded......
  • 射频跟随器(RF follower)
    射频跟随器(RFfollower)是一种电子元件,其功能是从输入信号中提取有用的信息,并将其传递到输出信号中。这种跟随器通常用于处理射频(RF)信号,因此具有特殊的频率响应和阻抗特性。射频跟随器的主要特点包括:高输入阻抗:射频跟随器的输入阻抗通常很高,这有助于减少信号的损失。低输出阻抗:射频......
  • flutter开发应用报RenderFlex children have non-zero flex but incoming height cons
    错误RenderFlexchildrenhavenon-zeroflexbutincomingheightconstraintsareunbounded.错误原因"RenderFlexchildrenhavenon-zeroflexbutincomingheightconstraintsareunbounded."错误通常是因为在使用Flex布局(例如Column、Row或Flex)时,子部件的某些子......
  • lower_bound / upper_bound 演示
    随便写个代码演示一下结果......
  • pod报错 pod has unbound PersistentVolumeClaims.
    1.背景部署Grafana的时候pod报错podhasunboundPersistentVolumeClaims.2.原因分析情况1.查看了grafana-data-pvc.yaml文件,发现storageClassName取数为空,当storageClassName为空的时候如果没有指定DefaultStorageClass,那么是不会分配pv给grafana-data的。情况2.查看......
  • 一键解决IndexError: index 0 is out of bounds for axis 1 with size 0
    文章目录问题描述解决思路解决方法问题描述IndexError:index0isoutofboundsforaxis1withsize0下滑查看解决方法解决思路IndexError:index0isoutofboundsforaxis1withsize0这个错误通常出现在你试图访问一个空数组的元素时。这个错误的意思是你正在试图......
  • 记录mybatis的一点小坑(Invalid bound statement (not found))
    今天学习SSM的时候出的一个小错,写测试程序的时候mybatis一直报bindingexception Invalidboundstatement(notfound): xxx语句。我以为是xxx语句出问题了。一直找。检查了namespace、statementid、mapperScanner啥的,都没发现异常。回去翻笔记,原来是xml的路径错了。 ......
  • 解决报错Invalid bound statement (not found)
    解决报错Invalidboundstatement(notfound)问题描述:在玩mybatis-plus的时候,在测试类写了一个测试批量插入的方法,结果就报错:它的意思是无效的跳转com.melo.mapper.ProductMapper下的方法batchInsert可是我的小红鸟和小蓝鸟都可以正常跳转,检查了mapper名称也没问题,就上网......
  • ClipToBounds
    子控件放在父控件内部,如果子控件的宽高大于父控件的宽高,则会超出,如下,线段Line超出画布Canvas。UIElement.ClipToBounds=True,可以把超出的部分裁剪掉。<CanvasWidth="100"Height="100"Background="AntiqueWhite"ClipToBounds="False"><Line......