二分查找

【C语言】二分查找 在有序表中,每次都取中间元素作为比较的对象。 如果给中间值与给定值相等,则查找成功,返回该元素的下标/索引; 如果中间值大于给定值,则在中间值的右半区间继续查找; 如果中间值小于给定值,则在中间值的左半区间继续查找;........................ 阅读详情

 二分查找必须是有序且无重复数组

 二分查找的具体流程:

1.判断M是否为查找的target,如果是,返回下标,若不是则比较M与target的大小

2.如果target比nums[M]小,则继续在左区间查找,令R = M -1,否则在右区间查找,令L = M + 1

3.重复步骤1和2,知道找到target或L > R

需要注意的点:

1.在查找的时候,如果查找区间为左闭右闭区间,则判断条件为L <= R,因为在L = R时也有意义

2.注意M =  L + (R - L)/2,如果直接令M = (L + R)/2,则当L和R较大时,有可能溢出问题

public class no2 {
    public static int search(int[] nums, int target) {
        int L=0;
        int R=nums.length-1;
        System.out.println(R);
        while(L <= R) {
            int M = L + (R - L)/2;
            if(nums[M] == target){//查找到target
                return M;
            }
            if(nums[M] < target){//目标在右区间查找[M + 1,R]
                L = M + 1;
            }
            if(nums[M] > target){//目标在左区间查找[L,M - 1]
                R = M - 1 ;
            }
        }
        return -1;
    }

    public static void main(String[] args) {
        int nums[] = {5,6};
        int target = 6;
        System.out.println(search(nums,target));
    }
}

【二分查找】详细图解 二分查找法详解 阅读详情

相关推荐

二分查找总结

一、概述 1、定义 二分查找是一种广泛使用的搜索算法,主要用于在有序数组(一般是升序,后面的内容也只是针对升序情况)上查找元素 2、主要思想 二分查找算法背后的主要思想是充分利用元素之间的有序性、以及数组的随机访问特性,每次都与查找区间的中间元素比较大小,根据比较结果不断将查找范围缩小一半(采用分治策略,剪枝?),直到元素被找到,或者,查找区间被缩小为0 3、工作流程 将中间元素...

小景的博客 1612

二分查找--图文详解

二分查找也称折半查找,是在一组有序(升序/降序)的数据中查找一个元素,它是一种效率较高的查找方法。

iLoyo_的博客 3万+

【二分查找】学习总结

二分查找:  (1) 一般的二分查找:          例如:找球号问题: 在某一国度里流行着一种游戏。游戏规则为:在一堆球中,每个球上都有一个整数编号i(0             这就是普通的二分查找,把所有的球号存入ans[ ]数组了,从小到大排序,然后二分查找,假设共n个球吧(数组中0----n-1)            首先边界 fir=0,end=n-1,

nyist_飘谊 2541

二分查找(折半查找)

二分查找是一种算法,其输入是一个有序的元素列表(必须是有序的),如果查找的元素包含在列表中,二分查找返回其位置,否则返回NULL 比如说有一个1-100的数字,我随机的选择其中一个数字(假设为60),你需要以最少的次数猜到我所选择的数字,每次猜测后,我会告诉你大了,小了,对了。 假设你第一次从1开始猜,小了 第二次:2 小了 第三次:3 小了 …… 第五十九次:59小了 ...

zmeilin的博客 15万+

二分查找算法

摘要 二分查找,一个很经典的算法。但是真正理解透彻这个算法却不容易。下面记载一点自己学习二分查找的心得。 参考 正文: 二分查找有N多种写法,有各种各样的形式,选一种合适自己,自己能够理解记住的才是最好的。下面分享一个我比较赞的版本。 对于最最最原始的二分查找,即给出一个Key,查找出key值的索引号。 注意注意注意!!最经典的二分查找对返回来的索引号没有任何要求,只要其对应的值是...

SCUT_Sam 5007

[算法|二分查找] 《有重复数字的升序数组的二分查找》

题目描述 请实现有重复数字的升序数组的二分查找: 给定一个 元素有序的(升序)整型数组 nums 和一个目标值 target ,写 一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1 示例1 输入 [1,2,4,4,5],4 输出 2 说明 从左到右,查找到第1个为4的,下标为2,返回2 示例2 输入 [1,2,4,4,5],3 输出 -1 示例3 输入 [1,1,1,1,1],1 输出 0 题解思路 第一想法:既然是二分查找,那就把二分查

喜欢前端的后端 MelodyJerry 1万+

【二分查找】有这一篇足够了

【二分查找】(折半查找)有这一篇足够了 1.二分查找是干啥的 2. 力扣中的一些练习题 2.1 二分查找 2.2 第一个错误的版本 2.3 搜索插入位置 2.4 在排序数组中查找元素第一个和最后一个位置 2.5x的平方根 2.6 有效的完全平方数 3.总结一下

m0_58761900的博客 1万+

模糊综合评价模型

一.引子 1.数学归纳法:同高中知识 2.秃子悖论:秃子悖论 这俩个例子都是类似于“量变引起质变”的道理,而在数学中我们把这类问题的性质叫做“模糊性”,在生活中我们也经常能遇到一些模糊的概念,比如年轻、帅、很少很多… 二.概述 模糊综合评价法是一种基于模糊数学的综合评价方法。该综合评价法根据模糊数学的隶属度理论把定性评价转化为定量评价,即用模糊数学对受到多种因素制约的事物或对象做出一个总体的评价。它具有结果清晰,系统性强的特点,能较好地解决模糊的、难以量化的问题,适合各种非确定性问题的解决。——来自百度百

The__Tyche的博客 2万+

二分查找之红蓝二分查找

/ 目标值在左半部分} else {left = mid;// 目标值在右半部分left : -1;// 返回最后一个满足条件的值的索引。

xiaoxie8023的博客 2328

手把手教你用STM32硬件SPI驱动BMI088陀螺仪(附完整代码)

本文提供了一份详尽的STM32硬件SPI驱动BMI088陀螺仪的实战指南。内容涵盖从硬件连接、SPI底层配置、驱动层封装到设备初始化、数据读取与同步策略,并深入探讨了数据处理、滤波融合及温度补偿等核心技巧,旨在帮助开发者构建稳定高效的IMU驱动框架,解决BMI088应用中常见的挑战。

quiet的专栏 529

滑模控制概述

滑模控制概述1.滑模控制概念2.滑模控制原理3.滑模控制设计步骤4.研究现状5.发展趋势5.1自适应滑模变结构控制5.2模糊滑模控制5.3神经网络与滑模控制的结合 1.滑模控制概念   滑模控制(Sliding Mode Control,SMC)是一种特殊类型的变结构控制(Variable Structure Control,VSC),因此又称之为滑模变结构控制,是近年来广泛应用和发展的一种控制方法。滑模控制本质上是一种非线性控制,即控制结构随时间变化而变化。滑模变结构控制是非线性系统中普遍采用的一种分析方

shiyi20190828的博客 2万+

优选算法《二分查找》

在之前的学习当中我们已经初步了解过了二分查找的整体逻辑以及二分查找,接下来我们在本篇当中将系统的来学习二分查找的使用方式以及在什么情况下可以使用二分查找。在之前的学习当中我们了解到的二分查找是要求在有序的数组当中当数组元素有序时才能使用,但是其实这只是二分查找最朴素的使用场景,接下来我们将学习更多的二分查找的使用场景。相信通过被本章的学习之后你会有所收获,一起加油吧!!!

mljy.博客 2496

关于YOLOv8的面试题(持续更新中...)

本章将计划更新关于YOLOv8中可能会成为面试题的关键技术点,计划持续更新,可能想到合适的问题我就会整理下更新到本博客中。

ice 4164

【算法】二分查找

本文总结了二分查找的特点、使用条件、和时间复杂度的分析,并且还将二分进行总结成三种情况,分别是朴素二分、查找左边界的二分和查找右边界的二分三种情况。通过若干到例题进行强化算法思维。

2302_80475369的博客 1841

RK3588平台开发系列讲解(硬件篇-功能外设2)

RK3588 芯片内置两个USB3.0 OTG控制器(内嵌2个USB2.0 OTG,下图绿色处),1个USB3.0 HOST 控制器,2个USB2.0 HOST控制器。这些控制器与PHY的内部复用图如下:USB3.0 OTG0 控制器支持SS/HS/FS/LS, 内嵌的USB2.0(HS/FS/LS)信号采用USB2.0 OTG PHY, 信号名见下图的红色方框内;RK3588目前仅此接口支持做Fireware的Download,应用中请务必要预留出。

whm128的博客 2508

国自然基金申请书撰写新思路:如何合理利用AI提高本子竞争力?

最后给大家推荐的400多所高校教师都在用的AI平台——高级学术版专业应用平台,集成了国际主流学术应用,以及ChatGPT、Claude、Gemini、Grok等Al大模型的高级版本平台,还有,可以辅助大家高效完成科研和学术写作任务,当然撰写硕博论文,课题、职称论文、国社科、国自然基金本子也是手拿把掐。创新点、技术路线、前期基础,但是我们也可以把写好的初稿交给AI,让它扮演资深研究员,帮我们精炼表述、优化段落结构,并揪出可能被评审追问的逻辑漏洞。,我们需要的是让它帮我们理清楚思路,而不是让它替我们完成内容。

智能AI让学术科研更容易 664

二分查找详解

二分查找是一种简单而高效的查找算法,在有序数组查找中有广泛的应用。插值查找和BST是二分查找的变种,它们在某些情况下能够提供更高的效率。理解这些算法的原理和实现方式,对于提高编程能力和解决实际问题具有重要意义。

Weirdo的博客 2877

RTK_ROS_导航(1): GNSS里程计

1. RTK 配置 4G CORS + 4G 网络 + 户外有信号,不能实现RTK,就恢复出厂设置 输出信息包含(一般需要三个同时打开): GAPPA:包含位置信息 GPVTG:包含速度信息 GPHDT:包含定向的朝向信息 2. ROS驱动 驱动安装sudo apt install ros-noetic-nmea-navsat-driver 运行,需要修改该功能包的启动端口,会自动解析上面的3个RTK语句信息roslaunch nmea_navsat_driver nmea_serial_d

旋风小短腿 4265

详解二分查找

一.为什么要使用二分查找 当有一个排好顺序的数组,我们需要知道我们要找的值是否在当前数组中,那么我们就需要自己实现一个查找的方法来进行实现,那么如果我们找的数在最后一个位置n处,假设这个n非常大,那么我们要是一次一次进行比较的话就要比较n次,这样就会显得非常慢,那么有没有一种相较于普通查找速度更快的方法吗,那就是二分查找。 二.二分查找的解释 二分查找:也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。

weixin_47651920的博客 5939

LangGraph 实战教程:搭建一个智能办公多Agent协作平台

只存储必要的信息:不要把所有的原始数据都存储在状态中,比如销售数据可以存储在数据库或向量数据库中,状态中只存储数据的 ID 或摘要。使用类型提示:避免类型错误,提高代码的可维护性。支持增量更新:LangGraph 默认支持状态的增量更新(通过reduce函数),比如messages列表可以通过追加新消息的方式更新,而不是每次都重新创建整个列表。Normal Edge 的定义非常简单,只需要在StateGraph对象(稍后会详细讲解)上调用add_edge# 创建一个 StateGraph 对象。

SuperAGI2025 221

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

[Algorithm][二分查找][二分查找OJ][搜索插入位置] + 二分查找原理 +二分查找模板

[Algorithm][二分查找][二分查找OJ][搜索插入位置] + 二分查找原理 +二分查找模板

SnowK博客 4251

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

c++二分查找

由于此时只剩下两个数了,所以我们不再二分了,直接判断A[8]是否等于17,或者A[9]是否等于17即可。//表示要在A[1]至A[N]范围查找x。因为我们要查找的数是3,小于A[mid],所以我们下次要在A[L]至A[mid]范围内查找,//查询数组A是否包含x。因为要查找的数是17,大于A[5],所以我们应该在A[5]至A[10]这一段查找,令L=1, R=10, 表示我们用在A[1],A[2],...A[10]里面查找。1、当要查找的数小于A[1]或者大于A[N],返回"no",否则进入二分查找过程。

浪子回头 1733

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

二分查找最坏查找次数_快速入门二分查找

二分查找使用二分查找的前提模板常见的二分查找应用比如猜数字游戏。// 二分查找适用于有序的数组 // 这个一个最简单的二分查找算法,前提是数组中不存在重复元素 function binarySearch(arr, target) { if (arr && Array.isArray(arr)) { if (!arr.length) return -1 let left =...

weixin_28849929的博客 6623
上一篇: Java学习day1
下一篇: Nginx学习
小飞机lulula
博客等级 码龄7年 0粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值