java学习笔记之二分查找法
java二分查找法
今晚上在逛码云的时候,看到一个php的二分查找法,看着这词比较熟悉,(因为当时学php的时候也学过,只是工作中没用过,又加上学的时候就稀里糊涂的,慢慢的就忘了),就点进去了,就用java写了一遍,使用的递归。
二分查找法的个人理解:
首先你得是个从小到大顺序的数组,进行数组索引取中间,将中间索引的元素与要查找的元素进行比大小,如果要查找元素的值大于中间元素,然后下一轮就取中间索引到最后索引处这个范围进行取中间索引,比大小的工作。如果要查找元素的值小于中间元素,然后下一轮就取数组起始索引到中间索引这个范围进行取中间,比大小的工作,就这样一直找下去。
php源代码:
1 <?php 2 3 // 二分查找法 4 function search(&$arr,$final,$leftIndex,$rightIndex){ 5 if($leftIndex>$rightIndex){ 6 echo "找不到了"; 7 return; 8 } 9 10 $middleIndex=round(($leftIndex+$rightIndex)/2); 11 12 //如果大于,像后面找 13 if($final>$arr[$middleIndex]){ 14 search($arr,$final,$middleIndex+1,$rightIndex); 15 //如果小于,应该向前面找 16 }else if($final<$arr[$middleIndex]){ 17 search($arr,$final,$leftIndex,$middleIndex-1); 18 }else{ 19 echo "找到了下标是$middleIndex"; 20 } 21 } 22 $arr=array(10,88,99,888,7777); 23 search($arr,99,0,count($arr)-1); 24 ?>
java代码实现:
1 public class Demo02 { 2 public static void main(String[] args) { 3 int[] arr={34,32,44,23,43,24}; 4 Arrays.sort(arr); 5 System.out.println(Arrays.toString(arr)); 6 search(arr, 32, 0, arr.length-1); 7 } 8 9 public static void search(int[] arr,int searchNum,int leftIndex,int rightIndex){ 10 if(leftIndex>rightIndex){ 11 System.out.println("找不到了"); 12 return; 13 } 14 int middleIndex=Math.round((leftIndex+rightIndex)/2); 15 if(searchNum>arr[middleIndex]){ 16 search(arr, searchNum, middleIndex+1, rightIndex); 17 }else if(searchNum<arr[middleIndex]){ 18 search(arr, searchNum, leftIndex, middleIndex-1); 19 }else { 20 System.out.println("找到目标:"+middleIndex); 21 } 22 } 23 24 25 }
不忘初心,方得始终
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· DeepSeek火爆全网,官网宕机?本地部署一个随便玩「LLM探索」
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 上周热点回顾(1.20-1.26)