算法整理4-二分查找

C/C++分治算法(1)——二分查找 常见分治算法总结(1)二分查找 一篇文章,带你搞懂 二分查找(注:代码语言的选择不应该限制了我们对算法的理解) 文章附有动图!一看就懂! 阅读详情
  • 什么是二分查找
    在一个排好序的线性表中查找一个数
    【常规】
    目标:查找3的下标
    在这里插入图片描述
    【左边界查找】
    目标:查找最左侧 3 的下标
    在这里插入图片描述【右边界查找】
    目标:查找最右侧 3 的下标
    在这里插入图片描述
  • 二分查找代码注释
    【常规】
    在这里插入图片描述
    【左边界查找】

解释里面先默认数在[ ,) 的[ 在这里插入图片描述【右边界查找】
解释里面先默认数在[ ,) 的[在这里插入图片描述

  • 二分查找的构建
    【常规]
int binarySearch(int[] nums,int target){
    int left = 0,right = nums.length - 1;
    while (left <= right)
    {
        int mid = left + (right - left) / 2;
        if (nums[mid] == targt)
        {
            return mid;
        }else if (nums[mid] < target)
        {
            left = mid + 1;
        }else if (nums[mid] > target)
        {
            right = mid - 1;
        }
    }
    return -1;
    
}

【左边界查找】

int left_bound(int[] nums,int target){
    int left = 0, right = nums.length;
    while (left < right)
    {
        int mid = left + (right - left) /2;
        if (nums[mid] == target)
        {
            right = mid;
        }else if (nums[mid] < target )
        {
            left = mid + 1;
        }else if (nums[mid] > target)
        {
            right = mid;
        }
    }
    if (left == nums.length || nums[left] != target )
    {                                                                                                                                                                       
        return -1;
    }
    return left;
}

【右边界查找】

int right_bound(int[] nums,int target){
    int left = 0, right = nums.length;
    int mid = left + (right - left) / 2;
    while ( left < right )
    {
        if (nums[mid] == target)
        {
            left = mid + 1;
        }else if (nums[mid] < target)
        {
            left = mid + 1;
        }else if (nums[mid] > target)
        {
            right = mid;
        }
        if (left == 0 ||nums[left - 1] != target)
        {
            return -1;
        }
        return left - 1;
    }
}
  • 二分查找的应用
    Leetcode:
    1. ⼆分查找(简单)
    2. 在排序数组中查找元素的第⼀个和最后⼀个位置(中等)
双相机坐标系标定 工业双相机对位标定 阅读详情

相关推荐

HBuilderX结合Android Studio实现Uniapp安卓Apk高效离线打包指南

本文提供了一份详细的Uniapp安卓Apk离线打包实战指南。通过整合HBuilderX与Android Studio,手把手教你搭建本地编译环境、配置原生工程、执行核心打包流程,并分享快速更新资源和排查常见问题的技巧,助你彻底摆脱云端打包的排队依赖,实现高效、可控的应用构建。

weixin_28835551的博客 551

第4章—二分查找

4.1 算法解释 二分查找又称折半查找,每次取区间的二分之一继续查找 4.2 求开方 题目代号: 69 x的平方根 题目描述: 实现 int sqrt(int x) 函数。 计算并返回 x 的平方根,其中 x 是非负整数。 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。 测试用例: 示例 1: 输入: 4 输出: 2 示例 2: 输入: 8 输出: 2 说明: 8 的平方根是 2.82842…, 由于返回类型是整数,小数部分将被舍去。 我的分析: 折半查找,一旦mid² <=x;来右边找

weixin_42250357的博客 808

VS2015+C++实战:手把手教你用海康MVS里的Demo搞定多相机同步采图与保存

本文详细解析了在VS2015+C++环境下,利用海康威视MVS工业相机SDK实现多相机同步采图与保存的全流程。从环境准备、SDK选择到多相机初始化、同步采图方案,再到异常处理与性能优化,提供了实战技巧和代码示例,帮助开发者快速掌握工业相机二次开发的核心技术。

weixin_29170327的博客 280

二分查找

时间复杂度O(logn) 二分查找必须先要给序列排序,也就是说要使用二分查找算法,序列必须是有序的。 1.普通的二分查找 LeetCode 704. 二分查找 class Solution { public: int search(vector<int>& nums, int target) { int l = 0, r = nums.size...

pengshengli的博客 326

LTE/NR中的相应cause场景【原创】

目录1.背景2.LTE EMM cause2.0 写在最前2.1 特殊处理的cause第一梯队第二梯队2.2 非特殊处理的cause3.NR cause 实网分析终端被拒等问题,经常遇到各类cause,其会对应不同的终端限制行为。查找已有资料后理解没有很深,自行总结本文用于梳理现象,如有错误敬请指正,转载请注明出处。 本文用于记录协议Ts 24.301及Ts 24.501中的cause及其对应行为。 已总结的cause值: 24.301中的cause分

2301_79567300的博客 3488

详解从无人机倾斜实景三维建模→模型修复→成果网络发布展示分享全流程

1、倾斜实景三维建模软件:CC(Smart3D)软件2、实景三维模型网页在线发布展示、分享平台:图新地球网页端(Wish3D·Earth平台)图新地球网页端(Wish3D·Earth平台)是基于 WebGL技术研发的国产实景三维模型Web端发布展示平台,可实现TB级倾斜实景三维数据快速加载,支持多种格式的三维模型,如OSGB实景模型、OBJ人工模型、SKP人工模型、RVT格式BIM模型等,同时支持模型单体化、三维模型测量分析、水面特效、日照分析等特殊效果呈现,此外也可以根据您的需要进行本地化部署级功能定制。

GISWorld3D的博客 4375

看《算法4》之二分查找法

用上周日的时间从头开始看《算法4》第一章,接触的第一个算法二分查找法。这个算法之前在大三学数据结构的时候有接触到,代码如下: package algorithms; import java.util.Arrays; import edu.princeton.cs.algs4.In;import edu.princeton.cs.algs4.StdIn;import edu.pri...

weixin_30586257的博客 168

Rstan下载安装攻略

准备把Rtools删掉,重新下载(胡乱猜测是安装顺序的问题),但是卸载时显示Rtools被占用,但我已经把该关的都关了。这一问题的出现,直接让我卸载掉了Rstudio,又重新安装了一个,不过这次安装在另一个磁盘,因为原来的内存不多了。或者参考知乎,使用清华镜像网址进行下载:(知乎链接)https://zhuanlan.zhihu.com/p/346947595(清华下载链接)https://mirrors.tuna.tsinghua.edu.cn/CRAN/bin/windows/Rtools/

m0_64643017的博客 3099

算法整理(4)——二分查找

5. 二分查找 Binary search 5.1 时间复杂度 这种搜索算法每一次比较都使搜索范围缩小一半。折半搜索每次把搜索区域减少一半,时间复杂度为O(logn)。Ο(logn) 。O(logn)。 5.2 原理 二分查找算法是一种基于有序数组的搜索算法。 搜素过程通常从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束; 如果带查找的元素大于中间元素,则在数组大于中间元素...

禹含含含含的博客 220

AI图像识别在临电配电箱安全检测中的应用与实践

计算机视觉与AI图像识别技术正逐步改变传统工业检测方式。通过深度学习模型如YOLOv5和ResNet,系统能自动识别设备元件并分析其状态,大幅提升检测效率和准确性。这种技术特别适用于需要严格遵循行业标准的场景,如临电配电箱的安全检测。将《施工现场临时用电安全技术规范》等条文转化为可量化的算法,AI系统能自动检查PE线连接、漏保功能等关键项目。实际应用表明,此类解决方案可使电气事故率下降90%以上,同时检测耗时缩短80%,为工地安全提供了智能化保障。

weixin_29042035的博客 328

Git救援:如何从误操作中恢复未提交的更改

摘要:本文探讨了误操作git reset --hard导致未提交更改丢失后的恢复方法。首先分析git reflog的局限性,随后介绍利用IDE本地历史记录(如IntelliJ IDEA和VS Code)进行文件恢复的具体步骤。最后建议使用文件系统恢复工具(如Linux的extundelete或Windows的Recuva)作为备选方案。文章强调定期提交的重要性,同时提供了意外发生时可行的恢复策略,帮助开发者尽可能挽回丢失的工作内容。(149字)

2501_90323865的博客 129

算法:二分查找

二分查找算法讲解以及一些相关题目的总结

yanxiao07的博客 1980

传导案例:某医疗仪器传导骚扰整改案例

紫外线光疗仪是一种专业的医疗设备,主要用于治疗银屑病、白癜风等皮肤疾病。该设备采用物理治疗技术,通过特定波长的紫外线照射人体来达到治疗效果。自1984年窄谱中波紫外线(NB-UVB)应用于临床以来,该技术已成为治疗早期蕈样肉芽肿(MF)的有效方法之一。作为二类医疗器械,紫外线光疗仪必须符合严格的电磁兼容性(EMC)标准,这不仅关系到设备自身的稳定运行,更关乎患者的使用安全和治疗效果。紫外线光疗仪传导骚扰整改案例充分展示了系统性EMC设计的重要性。

m0_56451176的博客 340

【分类整理】面试最常考的 100 道 LeetCode 算法题

100道面试常考的力扣算法题,经过众多面试者投票选出来的,快来领取!

负雪明烛 3万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

算法模板整理

---------------------转载请注明出处--------------------------- ---------------------转载请注明出处--------------------------- ---------------------转载请注明出处--------------------------- 文章目录二叉树总模板二分搜索树模板单调栈基础模板循环数组模板单调队列二分查找二分查找模板基本二分查找左侧边界二分查找右侧边界二分查找双指针快慢指针左右指针滑动窗滑动窗模板回溯算

Y.W.jian的博客 1977

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

《算法图解》整理笔记

一,第一章 算法简介 1.2 二分查找 二分查找是一种算法,其输入是一个有序的元素列表(必须有序的原因稍后解释)。如果要查找的元素包含在列表中,二分查找返回其位置;否则返回null。 使用二分查找时,每次都排除一半的数字。 一般而言,对于包含n个元素的列表,用二分查找最多需要log2n步,而简单查找最多需要n步。仅当列表是有序的时候,二分查找才管用。 二分法代码实现: def ...

qq_42379006的博客 2万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

算法——二分查找

前言 最进在学习过程遇到二分查找,有所收获,特作如下整理,如有不妥,请指正! 介绍 二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。 特点 时间复杂度 最好情况:O(1) 平均情况:O( log⁡2n\log_2{n}log2​n) 最坏情况:O( log⁡2n\log_2{n...

云祁QI 1457

算法整理:二分查找

二分查找:在有序集合搜索特定值的过程,每次比较之后将查找空间一分为二。target:要查找的值index:当前位置left,right:维持查找空间的指标mid:用来确定向左查还是向右查的索引查找空间: [left,right]二分查找维护left,right,mid,并将target和索引为mid的值进行比较;如果条...

weixin_41342046的博客 102

二分查找算法——二分查找

3次,剩下n/8……进行x次之后,剩余1个数,n/2^x = 1,2^x = n,解得,x = log n。那么之所以有二分查找,而没有三分、四分查找算法的原因是因为,二分这样的舍弃行为的时间复杂度是很优秀的,比其他的分割方式都要优秀。如果其小于目标值,说明可以舍弃这个数,而数组是有序(升序)的,当前数的左边区间的所有数一定小于该数,也就一定目标值,所以我们可以一次舍弃到一个区间。因为区间的值都是未知的,即使最后区间只有一个数->right == left,那个数也是未知的,所以我们也要进行判断,

xsc2004zyj的博客 500

排序算法学习整理拓展(二分查找)

  说到查找算法,最简单最暴力的算法就是一个个比较,确定是否为所需要的值。 例如,   0,1,2,3,4,5,6,7,8,9 十个数中查找是否存在数 x , 那么暴力的方式就是   1. 取出第一个数 0 与 x 比较,若相等则返回索引   2. 取出第二个数 1 与 x 比较,若相等则返回索引   3. 取出第三个数 2 与 x 比较,若相等则返回索引   4.取出第四个数 3 与...

weixin_43846396的博客 100

算法4 整理

算法4 1.排序 选择排序: 每次获取最大的数,交换位置 插入排序: 把数字插入有序数组中 希尔排序: 有间隔并且间隔递减的 归并排序: 归并: 两个有序数组的合并成新的有序...

weixin_30407613的博客 195

算法系列整理:查找算法-二分查找

一、二分查找使用条件 有序序列或数组(所查找的数据必须是有序的) 无重复数据 二、二分查找程序实现

不吃鱼的猫的博客 409

【算法】常见数据结构基本算法整理

【算法】常见数据结构基本算法整理 置顶 夏洛的网 2018-03-17 16:33:41 2029 收藏 12 分类专栏: 算法 数据结构 版权 去年11月份听了牛客网的课,当时做了纸质的笔记整理。 现在为了以后方便查找,将问题目录整理如下。 每道题只提供解题思路,不贴源代码。 可能会稍微手写一下代码(没有在IDE上测,为了试下以后面试时手写代码),或者伪代码。 by 03/17/2018 其实本科学过数据结构、算法设计,而且后来也看过不止一次,但这次又听左神讲,真的是“每次都有新发现”,觉得很有趣,必

雨的博客 1502

【优选算法篇】:揭开二分查找算法的神秘面纱--数据海洋中的精准定位器

基本思想二分查找算法的基本思想是:首先确定目标值可能存在的区间,然后逐步缩小区间直到确定目标值的位置或者确定目标值不存在。这个过程中,每次都会将查找范围缩小一半,因此大大提高了查找效率。前提条件有些地方可能对于二分查找算法的前提条件要求必须是有序的待查找数组,如果数组无序则不能使用二分查找。但实际上并不是“必须有序”才能使用,只要待查找数组满足二段性,可以将数组分成两个区间,这两个区间中的子数组又是有序的,同样可以使用二分查找,在后面的一些例题中就有这样的使用。算法步骤这里不具体讲解,直接在后面通过模板来讲

2301_82347435的博客 1412

二分查找算法

二分查找 1.二分查找的基本问题 二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 示例1: 输入: nums = [-1,0,3,5,9,12], target = 9 输出: 4 解释: 9 出现在 nums 中并且下标为 4 示例2: 输入: nums = [-1,0,3,5,9,12], target = 2 输出: -1 解释: 2 不存在 nums 中因

weixin_43235580的博客 330

常用十大算法_二分查找算法

【常用十大算法】 二分查找算法,分治算法,动态规划算法,KMP算法,贪心算法,普里姆(prim)算法,克鲁斯卡尔(Kruskal)算法,迪杰斯特拉(Dijkstra)算法,弗洛伊德(Floyd)算法,回溯算法。 循环实现二分查找 递归实现二分查找已经在前面说了,可以【猛击此处】了解详情 代码实现: package cn.dataStructureAndAlgorithm.demo.tenAlgorithm.binarySearch; import java.util.Array...

泥煤少年的博客 647
上一篇: StudyNote---Python For Data Analysis
下一篇: 微积分的本质
folinggg
博客等级 码龄6年 20粉丝 53原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值