二分查找(Java)

news/2024/10/21 9:12:08/

二分查找的难点在于,确定查找的区间。
我到底是在[left,right]中查找,还是在[left,right)中查找呢?
while循环中的条件到底是left<=right呢,还是left<right.

class Solution {public int search(int[] nums, int target) {if (nums.length == 0) return -1;int left = 0, right = nums.length - 1;int mid;while (left <= right) {mid = left + (right - left) / 2;if (nums[mid] == target) return mid;else if (nums[mid] < target)left = mid + 1;else right = mid-1;}return -1;}
}

今天搞明白了!
二分查找的用法有两种。

第一种是在[left,right]也就是左闭右闭区间中查找。(上边代码演示的那种)个人喜欢使用,因为不容易乱
在这种情况下,left=right是有意义的。因此,我们就需要把while循环里边的条件设置成left<=right.
相应地,因为left=right有意义,所以mid有取到left和right的可能。所以查找区间更新时需要将mid设置为left = mid+1或right=mid-1。
第二种是在[left,right)也就是左闭右开区间中查找。
在这种情况下,left=right是没有意义的,因为区间取不到right。所以,我们需要把while循环里边的条件设置为left<right.
相应地,因为left不会等于right,所以mid永远取不到right。所以查找区间更新时需要将mid设置为left=mid或right=mid。
比如,当前数组arr[mid]等于target时,直接返回mid。
当前数组arr[mid]<target时,表明需要去[left,right)的右半部分查找,那么就需要把左指针left往右移动。又因为查找区间是左闭右开的,left是可以取到的。mid这个位置已经验证过arr[mid]<target,所以mid这个位置没有再查的必要。所以把left=mid+1。
当前数组arr[mid]>target时,表明需要去[left,right)的左半部分查找,那么需要把右指针right向左移动。又因为查找区间是左闭右开的,right是取不到的。 所以就可以让right=mid,因为right这个位置在查找时是取不到的,所以mid这个位置也是娶不到的。

有点乱,全当自己捋一下思路。


http://www.ppmy.cn/news/231457.html

相关文章

Flink 导航

Flink 导航 注意点 &#xff1a; 当某个文章无法链接时&#xff0c;请 me当文章为 [] 状态时 , 该文章正在完善 , 催更请 me 序号概述运行架构DataStream1Flink 概述2Flink入门编程3[部署模式]4[Yarn部署]567 序号窗口时间语义处理函数12345 序号状态管理容错机制Flink SQL…

蓝桥杯-回路计数(状态压缩、动态规划)

题目描述 蓝桥学院由 21 21 21 栋教学楼组成&#xff0c;教学楼编号 11 11 11​​ 到 21 21 21​​。对于两栋教学楼 a a a和 b b b​&#xff0c;当 a a a和 b b b互质时&#xff0c; a a a和 b b b之间有一条走廊直接相连&#xff0c;两个方向皆可通行&#xff0c;否则没…

crt计算机图形系统是什么东西,计算机图形系统功能.PPT

计算机图形系统功能 3.3.2 激光打印机 激光打印机是一种既可用于打印字符又可用于绘图的设备 。 激光打印机的工作原理 1)激光打印机主要由感光鼓、粉盒、打底电晕丝和转移电晕丝等组成&#xff0c;如图(a)所示。 滚筒 转移 电晕丝 打印纸 打 底 电 晕 丝 感光鼓 碳粉 (a) 2)激…

计算机组成原理 外部设备分为,【2017年整理】计算机组成原理_8_外部设备.ppt

【2017年整理】计算机组成原理_8_外部设备 第8章 外部设备;一个完整的计算机硬件系统由两大部分组成&#xff1a;一是由中央处理器(CPU)和主存储器(MM)组成的主机&#xff0c;二是外部设备。外部设备是指连接到主机上的任何设备&#xff0c;简称外设&#xff0c;又称外围设备。…

IGBT功率半导体器件

IGBT功率半导体器件 IGBT在MOSFET基础上升级&#xff0c;市场空间增速快。IGBT 作为半导体功率器件中的全控器件&#xff0c;由BJT(双极型三极管)和MOSFET(绝缘栅型场效应管)组成的复合全控型电压驱动式功率半导体器件&#xff0c;有MOSFET 的高输入阻抗和GTR 的低导通压降两方…

计算机组成原理题库(2)

计算机网络题库 目录 计算机网络题库 1.选择题 2.填空题 3.分析判断题&#xff08;可能会有重复&#xff0c;大家跳着看&#xff09; 4.计算题 5.简述题 1.选择题 1.总线通信中&#xff0c;若发送方和接收方设备的速度有差异&#xff0c;但不是特别大&#xff0c;则最适…

分立元器件——电阻器

基本概况 1.1 电阻的概念 导体对电流的阻碍作用就叫该导体的电阻。电阻&#xff08;Resistor&#xff0c;通常用“R”表示&#xff09;是一个物理量&#xff0c;在物理学中表示导体对电流阻碍作用的大小。导体的电阻越大&#xff0c;表示导体对电流的阻碍作用越大。不同的导体…

沉铜/黑孔/黑影工艺,PCB该 Pick 哪一种?

自 1936 年&#xff0c;保罗艾斯纳正式发明了 PCB 制作技术&#xff0c;到现在&#xff0c;已过去 80 余年&#xff0c;PCB 迅猛发展&#xff0c;并且成为电子行业必不可少的基础。虽然 PCB 一般只占成品电路板 5~10%的成本&#xff0c;但 PCB 的可靠性&#xff0c;却远比单一的…