当前位置: 首页 > web >正文

重温经典算法——二分查找


版权声明

  • 本文原创作者:谷哥的小弟
  • 作者博客地址:http://blog.csdn.net/lfdfhl

在这里插入图片描述

基本原理

二分查找(Binary Search)是一种基于分治策略的高效搜索算法,适用于有序数组,其核心思想是通过重复将搜索区间分成两半:首先取中间元素与目标值比较,若相等则直接返回位置;若目标值小于中间元素,则在左半区间继续搜索;若目标值大于中间元素,则在右半区间继续搜索,直至找到目标值或搜索区间为空(表明目标不存在)。该算法每次比较可将搜索范围缩小一半,时间复杂度为 O(log n),空间复杂度为 O(1),具有查找速度快、性能稳定的优点。

代码实现

public class BinarySearch {/*** 二分查找实现* @param arr    有序数组(升序)* @param target 目标值* @return 目标值索引(未找到时返回 -1)*/public static int binarySearch(int[] arr, int target) {int left = 0;int right = arr.length - 1; // 右闭区间while (left <= right) { // 终止条件:左边界 <= 右边界int mid = left + (right - left) / 2; // 防溢出写法:(left + right) 可能溢出if (arr[mid] == target) {return mid; // 找到目标} else if (arr[mid] < target) {left = mid + 1; // 目标在右半部分} else {right = mid - 1; // 目标在左半部分}}return -1; // 未找到}public static void main(String[] args) {int[] arr = {2, 5, 8, 12, 16, 23, 38, 45, 56};int target = 23;int result = binarySearch(arr, target);if (result != -1) {System.out.println("目标值 " + target + " 的索引为: " + result);// 输出:目标值 23 的索引为: 5} else {System.out.println("目标值不存在");}}
}
http://www.xdnf.cn/news/13337.html

相关文章:

  • 借助AI识别测试盲区:从需求文档中挖掘遗漏场景
  • CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
  • 深度学习:概念、特点和发展史
  • Admin.Net中的消息通信SignalR解释
  • 基于OpenCV的风格迁移:图像金字塔方法
  • jupyterhub的浅浅使用-重点在解决无法登录
  • GD32-开发工程搭建
  • 超短脉冲激光自聚焦效应
  • 人脸识别技术应用备案找不找第三方
  • CppCon 2015 学习:Practical Move Semantics
  • SpringBoot+Vue+MySQL全栈开发实战:前后端接口对接与数据存储详解
  • 【算法篇】逐步理解动态规划模型5(子序列问题)
  • 隐藏wordpress后台登陆地址 让wordpress网站更安全
  • 【VBA】使用脚本把doc/docx转换为pdf格式
  • 消息消费类型和具体实现
  • nsswitch.conf配置文件内容解析
  • 生产安全与设备管理如何分清界限?如何正确用设备管理系统?
  • 微机原理与接口技术,期末冲刺复习资料(五)
  • 3.1 数据链路层的功能
  • 商品中心—2.商品生命周期和状态的技术文档
  • HTML 、CSS 、JavaScript基本简单介绍
  • 大型活动交通拥堵治理的视觉算法应用
  • ceph集群调整pg数量实战(下)
  • 【如何用Python调用DeepSeek的API接口?】
  • JavaSec-RCE
  • Python爬虫实战:爬取知乎回答详情
  • WebRTC(二):工作机制
  • CARSIM-车速、油门、刹车练习
  • 【计网】作业7
  • 金属矫平机:塑造平整与精度的工业利器