查找指定數值在數組中的位置--二分法


/*
     * 數組內元素非常多的時候,用for循環一一對比效率會變低
     * 二分法的原理,把數組從中間對折,用中間的數值與要找的對比,如果大於要找的,就說明在左邊,反之在右邊
     * 然后再用同樣的辦法,把左邊的對折
     * 當出現對折后比較,既沒有大於也沒有小於的情況時說明,中間值就是我們的要找的,return
     */
    public static int er(int[] arr,int number){
        int da =arr.length-1;    //最大值索引
        int xiao = 0;            //最小值索引
        int zhong = 0;            //中間位
        //循環條件:只要對折之后小的比大的大的了,循環停止
        while(da>=xiao){        
            zhong = (da+xiao)/2;        //對折中間位
            if(arr[zhong]>number){
                da=zhong-1;                //當中間值大於number,number在左邊,最大值-1
            }else if(arr[zhong]<number){
                xiao = zhong+1;            //當中間值大於number,number在右邊,最小值+1
            }else{
                return zhong;            //相等時返回中間值,即number的索引
            }
        }
        return -1;
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM