我需要为按升序排序的整数数组实现递归二进制搜索算法(即0 0 0 0 0 0 0 1 2 2 3 3 3 3 5 6 7 7 7 9
)。
我所拥有的数组包含以下数字:
private int srchHelper(int[] array, int first, int last, int x) {
if (first > last) return - 1;
int mid = (first + last) / 2;
if (array[mid] == x) {
return mid;
}
if (array[mid] < x) {
return srchHelper(array, (mid + 1), last, x);
}
else return srchHelper(array, (mid - 1), last, x);
}
但是,我目前的二进制搜索实现只能找到3右边的数字。出于某种原因,它找不到9,7,6和5。
下面是我的代码:
if string[0] = "#":
答案 0 :(得分:0)
确保您清楚算法的作用,然后仔细查看递归调用。