二分查找法
public class Test { public static void main(String[] args) { int[]a={1,5,8,9,11,12,56,89}; int i = binarySearch(a, 56); System.out.println(i); } /** * 又叫折半查找,要求待查找的序列有序。每次取中间位置的值与待查关键字比较,如果中间位置 的值比待查关键字大,则在前半部分循环这个查找的过程,如果中间位置的值比待查关键字小, 则在后半部分循环这个查找的过程。直到查找到了为止,否则序列中没有待查的关键字。 * @param arr * @param b * @return */ public static int binarySearch(int[]arr,int b){ if(null==arr || arr.length==0){ return -1; } int leftIndex=0;//查找区间的左边索引 int rightIndex=arr.length-1;//查找区间的右边索引 int mid=0;//区间的中间索引 while (leftIndex<=rightIndex){ //当左边的索引小于等于右边的索引时,可以继续取中间值 mid=(leftIndex+rightIndex)/2;//中间索引值 if(arr[mid]==b){ //如果中间索引所在的数据与需要查找的数据相等,则返回索引值 return mid; } if(arr[mid]>b){//b在左 rightIndex=mid-1;//如果需要查找的值在左边区间,则右边的索引要改为中间索引mid,又因为上一步知道arr[mid]!=b,所以要用mid-1作为右区间索引 }else { leftIndex=mid+1; //b在右边,同理所以mid+1 } } return -1;//找不到时 } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】