zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    数据结构——栈与队列操作(用栈模拟队列)
    数据结构——链队列的基本算法
    数据结构——循环队列(动态分配空间)基本运算
    数据结构——顺序栈(动态分配空间)的基本操作
    D3画完整柱状图(带坐标轴、标签)
    D3学习之坐标系绘制
    d3实现折线图
    D3学习之画布制作
    网址——几个有用的
    使用.csv文件
  • 原文地址:https://www.cnblogs.com/xuzhaocai/p/8099954.html
Copyright © 2011-2022 走看看