搜索算法:二分查找
二分查找Binary Search是一种高效的搜索算法适用于已排序的数组或列表。通过每次将搜索范围减半其时间复杂度为O(log n)远优于线性查找的O(n)。快速理解二分查找也叫折半查找的思路特别像我们玩 “猜数字” 游戏比如猜 1~100 之间的数字你先猜 50对方说 “大了”那你就知道答案在 1~49 之间再猜 25对方说 “小了”就知道答案在 26~49 之间每次都把查找范围缩小一半直到找到目标值或确定目标值不存在。因此只要你的数据是有序的二分查找就是最高效的选择。算法核心思想确定搜索范围初始化左边界left为 0右边界right为数组长度减 1。计算中间索引取中间位置mid left (right - left) // 2避免整数溢出。比较目标值若arr[mid] target返回mid。若arr[mid] target缩小范围至右半部分left mid 1。若arr[mid] target缩小范围至左半部分right mid - 1。终止条件left right当left right时说明目标不存在返回-1.代码实现(基础版javaclass Solution { // 准备一个无序数组先排序二分查找必须用有序数组 public int search(int[] nums, int target) { // 1. 初始化左右边界 int left 0,right nums.length - 1; // 2. 循环查找 while(leftright){ // 计算中间索引避免溢出 int mid (right left)/2 ; int num nums[mid]; if(num target) { // 找到目标返回索引 return mid; }else if(target num){ // 目标在右半区左边界右移 left mid 1; }else { // 目标在左半区右边界左移 right mid - 1; } } // 没找到返回-1 return -1; } }提醒tips必须先排序二分查找的前提是数组有序。如果数组是乱的比如[5,2,9]直接用二分查找会得到错误结果。一定要先用Arrays.sort()把数组排好序。mid 的计算方式不要写成mid (left right) / 2当left和right都是很大的数时会导致整数溢出。正确写法是mid left (right - left) / 2。边界更新要加 1 / 减 1不要写成left mid或right mid这会导致死循环。因为如果arr[mid]不是目标值这个位置就可以排除所以要直接跳到mid 1或mid - 1。循环条件是left right如果写成left right会漏掉最后一个可能的元素。比如当left和right相等时mid就是这个元素不判断就会错过总结基础版应对大多数情况下一下步骤完全可以直接套用初始化边界左指针left0右指针right数组长度-1循环查找当left right时有查找空间计算中间索引mid left (right-left)/2避免整数溢出替代(leftright)/2比较缩范围arr[mid] target找到目标返回midarr[mid] target目标在右半区left mid 1arr[mid] target目标在左半区right mid - 1未找到循环结束无返回返回-1表示目标不存在。

相关新闻

【毕设】java-springboot+vue“漫画之家”系统毕业设计

【毕设】java-springboot+vue“漫画之家”系统毕业设计

💟博主:程序员俊星:CSDN作者、博客专家、全栈领域优质创作者 💟专注于计算机毕业设计,大数据、深度学习、Java、小程序、python、安卓等技术领域 📲文章末尾获取源码数据库 🌈还有大家在毕设选题…

2026/7/4 0:25:27 阅读更多 →
双检时代通关术!虎贲等考 AI 降重降 AIGC,让论文告别机械修改内耗

双检时代通关术!虎贲等考 AI 降重降 AIGC,让论文告别机械修改内耗

查重率降到 15%,却被 AIGC 检测标红 70%;逐句改写两天,论文成了语句不通的 “机器文”;删了 AI 套话,重复率反倒反弹到 28%…… 当下学术审核早已进入 “查重 AIGC 双检” 硬核时代,无数毕业生和科研人陷入…

2026/7/4 23:42:09 阅读更多 →
2026年新角色:暗数据挖掘首席官的崛起——软件测试从业者的机遇与挑战

2026年新角色:暗数据挖掘首席官的崛起——软件测试从业者的机遇与挑战

在数字化转型的浪潮中,数据已成为企业核心资产,而暗数据——即未被充分利用或隐藏的结构化与非结构化数据(如日志、废弃测试用例、用户行为痕迹等)——正成为新的价值金矿。 2026年,随着AI技术爆发式演进和政策支持深化…

2026/5/17 3:12:34 阅读更多 →

最新新闻

C#工业视觉检测工具:WinForms界面下用YOLOv8 ONNX实时识别安全帽、手套和反光马甲(兼容Baumer等相机SDK)

C#工业视觉检测工具:WinForms界面下用YOLOv8 ONNX实时识别安全帽、手套和反光马甲(兼容Baumer等相机SDK)

本文还有配套的精品资源,点击获取 简介:一款开箱即用的C# WinForms工业视觉检测工具,专为工厂产线、工地出入口和巡检通道设计,支持实时识别工人是否佩戴安全帽、手套、反光马甲等关键防护装备。底层基于YOLOv8n模型的ONNX格式…

2026/7/5 9:48:43 阅读更多 →
Ubuntu原生安装Claude code

Ubuntu原生安装Claude code

一、无需 Node.js,会自动在后台更新: curl -fsSL https://claude.ai/install.sh | bash二、添加到系统环境变量 echo export PATH"$HOME/.local/bin:$PATH" >> ~/.bashrc source ~/.bashrc三、验证 claude --version claude doctor

2026/7/5 9:46:43 阅读更多 →
Python测试实战指南:从assert到pytest,构建高质量代码防线

Python测试实战指南:从assert到pytest,构建高质量代码防线

1. 项目概述 如果你已经能用Python写出一些功能性的代码,比如一个计算器、一个简单的爬虫,或者一个数据处理脚本,那么恭喜你,你已经迈出了第一步。但接下来,你可能会遇到一个所有开发者都无法回避的“灵魂拷问”&#…

2026/7/5 9:44:42 阅读更多 →
性能测试全流程解析:从核心指标到JMeter、Locust实战调优

性能测试全流程解析:从核心指标到JMeter、Locust实战调优

1. 性能测试:从“能用”到“好用”的必经之路 在软件研发的江湖里,性能测试常常被新手视为“玄学”,被老手当作“压箱底的绝活”。很多团队在项目初期疯狂赶工,功能测试一过就急着上线,结果一到活动大促或者用户量稍微…

2026/7/5 9:42:41 阅读更多 →
从零手写DES算法:深入理解Feistel网络与位运算实现

从零手写DES算法:深入理解Feistel网络与位运算实现

1. 项目概述与核心价值 最近在整理一些老项目的代码,发现很多同学对DES(Data Encryption Standard)算法的理解还停留在“调用 javax.crypto.Cipher ”的层面,一旦面试官问起“能不能手写一个DES?”,或者遇…

2026/7/5 9:38:40 阅读更多 →
JMeter+Jenkins自动化测试实战:SSE流式响应处理全攻略

JMeter+Jenkins自动化测试实战:SSE流式响应处理全攻略

1. 项目概述:当自动化测试遇上流式数据最近在做一个智能客服项目的自动化回归测试,后端接口从传统的JSON响应,全面升级到了SSE流式输出。这下可好,之前用JMeter写的那些接口测试脚本,跑起来要么直接超时,要…

2026/7/5 9:36:39 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻