二分法查找-java案例详解

作者在 2014-02-06 21:10:48 发布以下内容


/**



 * 功能:二分查找



 * 基本思想:



 * 假设数据是按升序排序的,对于给定值x,从序列的中间位置开始比较,



 * 如果当前位置值等于x,则查找成功;若x小于当前位置值,则在数列的



 * 前半段中查找;若x大于当前位置值则在数列的后半段中继续查找,直到



 * 找到为止。



 * 作者:徐守威



 */



package com.xushouwei;





public class T8 {





   /**



    * @param args



    */



   public static void main(String[] args) {



      // TODO Auto-generated
method stub



      int arr[]={2,5,7,12,25};



      //实现查找



      BinaryFind binaryfind=new BinaryFind();



      //调用find方法



      binaryfind.find(0, arr.length-1, 12, arr);



   }





}



//定义一个类



class BinaryFind



{



   //这里的val是定义要被查找的数



   public void find(int leftIndex,int rightIndex,int val,int arr[])



   {



      //首先找到中间的这个数



      int midIndex=(rightIndex+leftIndex)/2;



      //得到中间的那个数



      int midVal=arr[midIndex];



      //要不停的查找必须满足左边的数大于右边的数



      if(rightIndex>=leftIndex)



      {



        //如果要找的数比midVal



        if(midVal>val)



        {



           //arr数组的左边去找(递归方法实现)



           find(leftIndex,midIndex-1,val,arr);



        }



        else if(midVal<val)



        {



           //arr数组的右边去找(递归方法实现)



           find(midIndex+1,rightIndex,val,arr);



        }



        else if(midVal==val)



        {



           System.out.println("要找的就是这个数,该数下标为:"+midIndex);



        }



      }



   }



}





默认分类 | 阅读 1146 次
文章评论,共0条
游客请输入验证码
浏览18316次
文章分类
最新评论