【发布时间】:2019-07-23 06:36:53
【问题描述】:
我认为我是二分搜索的专家,因为我可以做到线性、递归和迭代,但我什至不能让它在 java 中工作
所以如果我将目标变量设置为等于中点,我的 if 语句会跳过它并继续执行 else if
public static void main(String[] args) {
int[] list = { 11, 22, 33, 44, 55, 66, 77, 88, 99 };
int target = 44;
System.out.print(BinarySearchIterarive(list, target));
}
public static boolean BinarySearchIterarive(int[] list, int target) {
int high = list.length - 1;
int low = 0;
while (low <= high) {
int mid = (low + high) / 2;
if (target == list[mid]) {
return true;
} else if (target < list[mid]) {
high = mid - 1;
} else {
low = mid + 1;
}
}
return false;
}
}
它只是跳过了我的 if 语句
if (target ==list[mid])
当 list[mid] 为 44 时
【问题讨论】:
-
与工作室调试器相比,它在执行 if 语句后不返回 true,它会继续检查 else if
-
数组从零开始,正确的索引是
3 -
无法重现:对我来说,代码按预期工作。
标签: java arrays element binary-search