关于二分查找法(Java)
二分查找法是将一个有序数组平均分成两份,将其中间数和对应要查找的值进行比较;
例如现在我们将数组中最小的元素的下标设置为min
最大的元素的下标设置max
中间的元素下标mid=(max-min)/2+min
然后用预期要找的值value去进行对比
如果预期值比下标为mid的元素的值要大,则调整min的值为mid+1
如果预期值比下标为mid的元素的值要小,则调整max的值为mid-1
然后均需要重新计算mid值
直到min>max之前一直进行比较,直到找到对应的value值,并输出其下标
public class ArrayTools { public int binarySearch(int[] arr, int value){ //二分查找法,要定义mid,max,min int min=0; int max=arr.length-1; // int mid=(min+max)/2; //该种写法可能会导致值的溢出,所以采用下面的写法会更好 int mid=(max-min)/2+min; //由于不知道需要进行多少次循环,应使用while循环 while (max>min){//此处需要大于等于,避免只有两个元素时直接出现BUG //二分查找的前提是数组是有序的 if (value<arr[mid]){ //大了,调整max值和mid值 max=mid-1; mid=(min+max)/2; }else if(value>arr[mid]){ //小了。调整min值和mid值 min=mid+1; mid=(min+max)/2; }else { return mid; } } return -1; }
学习要有计划、代码要经常练习、学习之后要有输出、多交流、多总结、找出规律。
忌三天打鱼两天晒网、浅尝辄止、闭门造车
分类:
后端语言
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南