二分查找算法

/* 
     * 非遞歸二分查找算法 
     * 參數:整型數組,需要比較的數.
     * liuzheng
     */  
    public static int binarySearch(Integer[]srcArray,int des){  
        //第一個位置.  
        int low=0;  
        //最高位置.數組長度-1,因爲下標是從0開始的.  
        int high=srcArray.length-1;  
        //當low"指針"和high不重複的時候.  
        while(low<=high){  
        //中間位置計算,low+ 最高位置減去最低位置,右移一位,相當於除2.也可以用(high+low)/2  
        int middle=low+((high-low)>>1);  
        //與最中間的數字進行判斷,是否相等,相等的話就返回對應的數組下標.  
        if(des==srcArray[middle]){  
            return middle;  
        //如果小於的話則移動最高層的"指針"  
        }else if(des<srcArray[middle]){  
            high=middle-1;  
        //移動最低的"指針"   
        }else{  
            low=middle+1;  
            }  
        }  
        return -1;  
        }   
    } 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章