二分查找算法
1.二分查找算法
给定的条件:给定的有序数组A查找目标值为target,其中A标记为
数组序号从0开始,其下标最大为数组长度-1.
举例数组:5 14 22 30 31 41 44
条件:i>j i表示左边下标 j表示右边下标 i从5开始 j 从44开始
思想:每次计算其中间下标的值和target值进行对比,分为以下三种情况
middle=(i+j)>>>2 表示右边移一位
target<a[middle] j=m-1
a[middle]<target i=m+1
target=a[middle] 结束查找找到了
public class Main { public static void main(String[] args) { int[] a = {5,14,22,30,31,41,44}; System.out.println(binarySearchBasic(a,5)); System.out.println(binarySearchBasic(a,44)); int i=0; int j= Integer.MAX_VALUE-1;//求出最大下标 System.out.println("索引值:i="+i); System.out.println("索引值:j="+j); int m = (i+j)/2; System.out.println("索引值:(m+j)/2="+(m+j)/2); } //实现二分查找 public static int binarySearchBasic(int[] a,int target){ //二分查找基础版本 a待查找的有序数组 target目标值 //找得到返回索引 找不到返回-1 int left = 0; int right = a.length-1; while(left<=right){ int middle = (left+right)/2; if(a[middle]<target){ left = middle+1; }else if(target<a[middle]){ right = middle-1; }else{ return middle; } } return -1;//没有找到返回为-1 } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术