算法说明:取中间位置的值与待查字比较。如果比待查字更大,则去列表的前半部分查找,如果比待查字小,则去列表的后半部分查找,直到找到这个待查字,或者返回没有找到这个待查字。其中给定的列表是从大到小排列的有序表
// 二分查找算法,待查的有序数组、待查的数字 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; }