/*
* 非遞歸二分查找算法
* 參數:整型數組,需要比較的數.
* 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;
}
}
二分查找算法
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.