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 }
复制代码

 

posted @   猿上生活  阅读(253)  评论(0编辑  收藏  举报
编辑推荐:
· 智能桌面机器人:用.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)
点击右上角即可分享
微信分享提示