二分查找BinarySearch

2023-11-15

//二分查找:在包含size个元素、从小到大排序的int数组array里查找元素p,如果找到返回下标,如果未找到返回-1
int BinarySearch(int array[], int size, int p)
{
	int left = 0;//查找区间的左端点
	int right = size - 1;//查找区间的右端点
	while (left <= right)//如果查找区间不为空,继续查找
	{
		int mid = left + (right - left) / 2;//当下标不为整数时,向下取整
		if (p == array[mid])
			return mid;
		else if (p > array[mid])
			left = mid + 1;//设置新的查找区间的左端点
		else
		{
			right = mid - 1;//设置新的查找区间的右端点
		}
		
	}
	return -1;
}


//注意:int mid=(L+R)/2;//取查找区间正中元素的下标
//为防止(L+R)过大溢出,int mid=L+(R-L)/2
//在包含size个元素的、从小到大排序的int数组a里查找比给定整数p小的,下标最大的元素。找到则返回下标,找不到返回-1
int LowerBound(int a[], int size, int p)
{
	int left = 0;//查找区间的左端点
	int right = size - 1;//查找区间的右端点
	int lastPosition = -1;//到目前为止找到的最优解
	while (left <= right)//如果查找区间不为空就继续查找
	{
		int mid = left + (right - left) / 2;//查找区间正中元素的下标
		if (a[mid] >= p)
			right = mid - 1;
		else
		{
			lastPosition = mid;
			left = mid + 1;
		}
	}
	return lastPosition;
}



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

二分查找BinarySearch 的相关文章

  • 红帽认证-RHCSA

    目录 RHCSA认证考的是 Server A 题目 一 按要求配置网络 二 配置系统使用默认存储库 三 调试SELinux 四 创建用户账户 五 配置cron 作业 六 创建协作目录 七 配置NTP 八 配置 autofs 九 配置 var

随机推荐

  • 牛客网-华为机考-HJ30 字符串合并处里--详细解题思路,并有详细解题代码和注解

    注意 代码和解题思路在后面 HJ30 字符串合并处理 描述 按照指定规则对输入的字符串进行处理 详细描述 第一步 将输入的两个字符串str1和str2进行前后合并 如给定字符串 dec 和字符串 fab 合并后生成的字符串为 decfab
  • 排序之sort排序

    C 的STL里面有个sort函数 可以直接对数组排序 复杂度为n log2 n 使用这个函数 需要包含头文件
  • 【计算机毕业设计】228图书商城网站

    一 系统截图 需要演示视频可以私聊 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术 让传统数据信息的管理升级为软件存储 归纳 集中处理数据信息的管理方式 本图书商城网站就是在这样的大环境下诞生 其可以帮助管理者在短时间内处理完毕庞大
  • ModuleNotFoundError: No module named 'cv2' (安装cv2)

    1 问题 ModuleNotFoundError No module named cv2 Pycharm 中 import cv2 出现错误 2 解决 安装cv2 pip install opencv python 如果只用主模块 使用这个
  • vulnhub靶机Looz

    下载地址 Looz 1 VulnHub 主机发现 arp scan l 端口扫描 nmap min rate 10000 p 192 168 21 155 扫描端口信息 nmap sV sT O p22 80 139 3306 8081 1
  • flask中文学习教程

    2019独角兽企业重金招聘Python工程师标准 gt gt gt http flask123 sinaapp com 转载于 https my oschina net 935572630 blog 371473
  • vue中 关于 同一个 页面 使用搜索功能 数据不更新

    注意 我这里的搜索是在 公共的头部里面如图 我这里点击搜索是跳到搜索页面 并且传参 代码如下 div class search div
  • mipi协议_学习共享——MIPI

    点击上方蓝字 记得关注我们 MIPI名词解释 MIPI Mobile Industry Processor Interface 移动行业处理器接口 是2003年由ARM Nokia ST TI等公司成立的一个联盟发起的为移动应用处理器定制的
  • 3D纹理,立体纹理,三维纹理示例配置

    1 下载freeglut并使用cmake配置 编译安装 https github com FreeGLUTProject freeglut git clone https github com FreeGLUTProject freeglu
  • c++学习——构造函数和析构函数

    构造函数和析构函数 简要概述 构造函数和析构函数的简单调用 构造函数和析构函数能够函数重载 默认的构造函数和析构函数 拷贝构造 构造函数的分类和调用 匿名对象 拷贝构造函数的调用时机 构造函数的调用规则 多个对象的构造函数和析构函数 深浅拷
  • 数组越界访问会发生什么错误?怎样避免该错误?_后缀数组跳坑笔记

    记点写题的时候遇到的坑 可能会更新 多组数据相关 1 h数组需要清空 别的一般不需要 除了倍增算法中为简化代码把上一迭代的rk数组开成两倍的情况 那个场合会有因为字符串长度不同而导致访问到以前填写的不知道什么鬼东西的情况导致rk算错 大概就
  • [790]win环境Maven安装配置

    文章目录 什么是Maven Maven是一个项目管理和整合的工具 Maven为开发者提供了一套完整的构建生命周期框架 开发团队基本不用花多少时间就能自动完成工程的基础构建配置 因为Maven使用了一个标准的目录结构和一个默认的构建生命周期
  • 【UE4】多视角相机捕获图像如何同屏拼接在一起

    前段时间有个Demo移植的需求 需要把实时裸眼3D多视角立体显示的Unity版本移植到UE4 主要包含后处理Shader 相机矩阵变换 多视角画面平铺拼接三大部分 10 10 多视角相机捕获图拼接效果 对现有的多窗口显示方法进行查阅后 发现
  • 不一样的视角,不一样的Kinect for Windows 2.0

    随着科技的发展 智能硬件已经越来越多的出现在我们的生活当中 侦探片中的无线内耳耳机已经变成了蓝牙耳机 而 少数派报告 中手势操作的荧幕界面也已变成现实 对人机交互有很高要求的开发者来讲 于7月正式发售的Kinect for Windows
  • pytorch 线性回归拟合sin函数

    目录 1 库文件 2 定义超参数 3 获取数据集 4 加载训练集 测试集 5 搭建线性网络 6 实例化网络和优化器 7 训练网络 8 可视化 9 结果展示 10 完整代码 1 库文件 os 文件是为了消除matplotlib 绘图的错误 T
  • Yolox_s可视化网络结构图

    Yolox共有七种网络结构 包含2种轻量级网络 和5种标准网络 轻量级网络 1 Yolox Nano可视化网络结构图 点击查看 2 Yolox Tiniy可视化网络结构图 点击查看 标准网络 1 Yolox s可视化网络结构图 点击查看 2
  • Java中对象实例化过程中的多态特性

    通过上述代码 始终明确调用的方法必须是实例化子类中重写的方法 首先 在main函数中 new B new了一个B类的实例化对象 在实例化对象时 调用了B类中的构造函数 执行 super 5 也就是public A int v gt setV
  • 14.应用层HTTP协议

    目录 一 OSI七层协议 vs TCP IP五层协议 二 HTTP协议 URL 1 1URL 中的可省略部分 2 请求消息Request 2 1请求行 2 2请求头 2 3空行 2 4请求数据 2 5HTTP 请求方法 3 响应消息Resp
  • sql developer默认是不自动提交事务的,如何查询未被提交的事务

    select SQL TEXT status from v sql v transaction where LAST ACTIVE TIME START DATE 上面的语句可以查询未被提交的事务 如果你查询或更新时很长时间没反应 一般是另
  • 二分查找BinarySearch

    二分查找 在包含size个元素 从小到大排序的int数组array里查找元素p 如果找到返回下标 如果未找到返回 1 int BinarySearch int array int size int p int left 0 查找区间的左端点