二分查找总结——左闭右开区间和左闭右闭区间(C++语言)

2023-10-30

二分查找:

1.左闭右开区间,如有相同元素返回查找到的第一个元素。

PS:主循环判断条件都是一样的(left < right),注意这里不能取等号!有相同元素时,如果要返回第一个查找到的元素,则区间包含相同元素时应该从右向左收缩,这时判断条件应该加上等号,并且此时找到的就是第一个元素的秩;如果要返回最后一个查找到的元素,则区间包含相同元素时应该从左向右收缩,这时判断条件没有等号,并且此时找到的是大于目标元素的第一个元素的秩,因此应该返回的目标元素的秩等于找到的秩减一。

#include <iostream>
#include <stdio.h>

using namespace std;

//左闭右开,相同元素返回第一个
int binSearch(int* A, int e, int left, int right)
{
	while (left < right)
	{
		int mid = left + ((right - left) >> 1);   //移位操作比除操作快
		(e <= A[mid]) ? right = mid : left = mid + 1; //从右向左收缩
	} 
	return left;    //找到的就是需要返回的
}

int main()
{
	int A[10] = { 0, 1, 2, 3, 3, 4, 5, 6, 6, 7 };
	int a = binSearch(A, 0, 0, 10);
	int b = binSearch(A, 1, 0, 10);
	int c = binSearch(A, 2, 0, 10);
	int d = binSearch(A,
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

二分查找总结——左闭右开区间和左闭右闭区间(C++语言) 的相关文章

  • Typora 含多图片笔记快速上传到 CSDN 上发表

    Typora 含多图片笔记快速上传到 CSDN 上发表 适用场景 解决方案 具体步骤 适用场景 在 Typora 里面记笔记 上传的图片是本地保存的 如果要将笔记上传到 CSDN 上发表的话 图片得一张一张地拖拽非常麻烦 解决方案 Typo
  • TypeScript快速上手

    简介 参考文档 https ts xcatliu com 阮一峰typescript入门教程 TypeScript JavaScript With Syntax For Types typescriptlang org typescript
  • Ubuntu上搭建RK3588开发环境

    目标 Ubuntu上搭建RK3588开发环境 并成功运行 测试其芯片性能 可参考连接 https wiki t firefly com zh CN Core 3588J started html x 16号之前完成打包Ubuntu系统 差一
  • String[] 插入元素数据

    String pIdStr request getParameter ids String projectIdList pIdStr split List

随机推荐

  • Mybatis报错mapkey is required解决方案

    Mybatis报错mapkey is required解决方案 问题背景 解决方案 总结 Lyric 几天都没有喝水也能活 问题背景 因为使用了mybatisX插件 导致检查报错mapkey is required 解决方案 1 关闭myb
  • vue中下载文件使用file-saver,文件错误excel无法打开

    最近使用到了file saver下载文件 通过axios调接口拿文件数据 再通过file saver下载文件 但就在我成功下载文件并打开时 提示这个信息 主要的原因就是没有设置响应的文件流类型为 blob 加上后就可以打开了
  • FreeRTOS config开始的宏

    FreeRTOSConfig h系统配置文件中可以自定义 FreeRTOS h中定义默认值 configAPPLICATION ALLOCATED HEAP 默认情况下FreeRTOS的堆内存是由编译器来分配的 将宏configAPPLIC
  • 基于flask做的用户注册界面一(无后台接收,无数据库)

    1 init py文件界面 再此声明 完全是个人问题 一般 init py不能这样用 init py文件 from flask import Flask app Flask name debug True import apps view
  • springboot(2.1.1.RELEASE)启用jdk动态代理(默认启用cglib)的方法

    大前提 该类必须实现了某个接口 其他类使用注解引用该类时 必须基于其实现的接口类型注入 否则注入不成功 方式1 启动类上注解如下设置 SpringBootApplication exclude AopAutoConfiguration cl
  • 两幅有偏差的影像同坐标的地物不一定一样

    第一幅图上 如果经纬度100 100上是只狗 那么另外一个图上同经纬度不一定有狗了 是有偏差的
  • centos 6.5 安装JDK 7

    安装说明 系统环境 centos 6 3 安装方式 rpm安装 软件 jdk 7 linux x64 rpm 检验系统原版本 root admin java version 进一步查看JDK信息 root admin rpm qa grep
  • java中字节流的分类都有哪些_Java------字节流和字符流(I)

    字节流 读写字节文件 通常使用字节流 如 二进制文件 jpg mp3 avi exe com dll windows平台的执行文件 exe com dll 字符流 读写字符文件 通常使用字符流 如 txt java css doc html
  • MAE入局多模态分析,CMU联合微软发布仅需文本监督的视觉语言新模型VLC

    原文链接 https www techbeat net article info id 3677 作者 seven 论文链接 https arxiv org abs 2205 09256 代码链接 https github com guil
  • 使用vite快速安装项目(SyntaxError:Unexpected reserved word?)

    前提环境 需要安装nodejs和npm 并且nodejs版本必须在16以上 安装vite 打开命令窗口 执行命令 npm install vite g 1 2 如果执行该命令报错 SyntaxError Unexpected reserve
  • gjb1188a

    unsigned short VerifyWord1188A unsigned short data 32 unsigned long len unsigned char i 0 unsigned short verifyWord 0 fo
  • numpy的相关使用方法

    20210211 引言 之前的时候 一些关于numpy的内容都记录在另一篇文章中 pandas及numpy 常用操作 里面大部分都是pandas的操作 但是最近使用numpy比较多了之后 也积累了一些内容 所以这里专门记录一下 内容列表 拼
  • 计算机二级题目之数组学习

    1 下列给定程序中 函数fun的功能是 用冒泡法对6个字符串按由小到大的顺序进行排序 请改正程序中的错误 使它能得出正确的结果 include
  • (16)pandas多层级索引的访问

    import numpy as np import pandas as pd from pandas import Series DataFrame 内容 Series数组 DataFrame数组 构建一个多层级索引 构造一个多维索引 in
  • C++异常处理

    一 异常处理定义 异常是程序在执行期间产生的问题 任何事物 任何情况都可以当做异常 错误算是异常的一种 C 异常是指在程序运行时发生的特殊情况 比如尝试除以零的操作 异常处理机制 暂时性不做处理 抛出异常 留给使用者去处理 异常提供了一种转
  • react调用model层的接口(dispatch)在组件中获取接口返回状态

    我们调用model层的接口 然后在组件中获取接口返回的数据 逻辑通常是 在model层写好了逻辑 去获取或者计算接口返回数据 然后组件再引入这个model层中的数据 在组件中dispatch这个接口就行 但是我现在在组件中调用这个接口后 我
  • python import模块方法

    python包含子目录中的模块方法比较简单 关键是能够在sys path里面找到通向模块文件的路径 下面将具体介绍几种常用情况 1 主程序与模块程序在同一目录下 如下面程序结构 src mod1 py test1 py 若在程序test1
  • egg jwt token生成以及验证拦截

    1 安装egg jwt npm install egg jwt save 2 配置 config plugin js jwt jwt插件启用 enable true package egg jwt config config default
  • Linux(基础IO、文件权限、Makefile)

    目录 1 man 手册 1 1 汉化 1 2 具体使用 2 文件权限 2 1 权限理解 2 2 文件详细信息查询 2 3 权限更改 3 常用函数接口 3 1 open 3 2 read 3 3 write 3 4 close 3 5 函数使
  • 二分查找总结——左闭右开区间和左闭右闭区间(C++语言)

    二分查找 1 左闭右开区间 如有相同元素返回查找到的第一个元素 PS 主循环判断条件都是一样的 left lt right 注意这里不能取等号 有相同元素时 如果要返回第一个查找到的元素 则区间包含相同元素时应该从右向左收缩 这时判断条件应