算法说明:取中间位置的值与待查字比较。如果比待查字更大,则去列表的前半部分查找,如果比待查字小,则去列表的后半部分查找,直到找到这个待查字,或者返回没有找到这个待查字。其中给定的列表是从大到小排列的有序表
// 二分查找算法,待查的有序数组、待查的数字
public static int biSearch(int []array,int a) {
int lo = 0; // 左边下标
int hi = array.length - 1;
int mid; while(lo<=hi) {
mid = (lo + hi)/2; // 中间位置
if(array[mid] == a) {
return mid + 1; // 返回第多少个值是这次需要查找的值
}else if(array[mid]<a) { // 向右查找
lo = mid + 1;
}else {
hi = mid - 1; // 向左查找
}
}
return -1;
}