实现:
public class HalfFind {
public static void main(String[] args) {
System.out.println(“下标为:” + half(new int[]{1, 2, 3, 4, 5, 9}, 9, 0, 5));
}
//需要指定查找数组的边界left和right,如果不这样的话,new个新数组也能实现,但是浪费内存
public static int half(int[] ints, int x, int left, int right) {
if (ints == null || left > right || x < ints[left] || x > ints[right]) return -1;
int center = (right + left) / 2;
System.out.println(“此次折半中位数下标为:” + center);
if (ints[center] == x) {
//如果相等,直接返回下标
return center;
} else if (ints[center] < x) {
//如果小于,则去右半边继续找
return half(ints, x, center + 1, right);
} else {
//如果大于,则去左半边继续找
return half(ints, x, left, center - 1);
}
}
}