二分法查找针对的是对有序的数组。特点:效率很高。

class Demo6{
    
    public static void main(String[] args){
        //先定义一个有序数组
        int[] array = {21, 34, 56, 78, 79 ,83, 85, 90};
        int index = findIndex(array,83);
        System.out.println(index);
        
    }
        
        
        //定义一个方法可以进行二分法查找
        public static int findIndex(int[] array, int num){
            //先找出最小下标,最大下标和最大下标
            int minIndex = 0;
            int maxIndex = array.length-1;
            int midIndex = (array.length-1)/2;
            //使用条件判断,判断想要找到的数num是否等于数组此时的中间数
            while(num != array[midIndex]){
                if(num > array[midIndex]){
                //如果num > array[midIndex]时,执行该语句
                //更新最小下标
                minIndex = midIndex + 1;
                //更新中间下标
                midIndex = (maxIndex + minIndex)/2;
            }else{
                //如果num < array[midIndex]时,执行该语句
                //更新最大下标
                maxIndex = midIndex - 1;
                //更新中间下标
                midIndex = (minIndex + maxIndex)/2;
                }
            }
            return midIndex;
        
    }
        
        
}

老师的代码如下:

class Demo16{
    
    /**
     * 求出数组的最大值
       
       
     
     */
    public static void main(String[] args){
        //定义一个数组
        int [] array = {4,6,7,8,9,23,55,67,89,99,615};
        //查找55的索引
        int index = findIndexBinary(array, 615);
        System.out.println("索引是:"+index);
        
    }
    
    /**
     *二分法查找
     */
    public static int findIndexBinary(int [] array, int a){
        //最小索引
        int minIndex = 0;
        //最大索引
        int maxIndex = array.length - 1;
        //中间索引
        int midIndex = (minIndex + maxIndex)/2;
        
        while(a != array[midIndex]){
            //如果a大于中间值
            if(a > array[midIndex]){
                //更新最小索引
                minIndex = midIndex + 1;
            }else{
                //更新最大索引
                maxIndex = midIndex - 1;
            }
            //更新中间索引
            midIndex = (minIndex + maxIndex)/2;
        }
        //返回目标索引
        return midIndex;
        
    }
    
    
    
}

 

posted on 2017-10-24 23:18  吃石榴要吐籽  阅读(96)  评论(0编辑  收藏  举报