用循环实现:
public static int binarySearch(Integer[] srcArray, int des) {
int low = 0;
int high = srcArray.length - 1;
while ((low <= high) && (low <= srcArray.length - 1)
&& (high <= srcArray.length -1)) {
int middle = (high + low) >>1;
if (des == srcArray[middle]) {
return middle;
} else if (des < srcArray[middle]) {
high = middle - 1;
} else {
low = middle +1;
}
}
return -1;
}
也可以用递归实现:
static int a[] = {1, 2, 5, 8, 7, 9};
static int k = 7; // 这里是要查找是数
public static void main(String[] s) {
System.out.println("" + found(0, a.length-1));
}
// x、y是起始位置
public static int found(int x, int y) {
int m = (y + x) / 2; if (x > y) {
return -1;
} else {
if (a[m] == k) return m;
else if (a[m] > k) return found(x, m - 1);
else return found(m + 1, y);
}
}