二分查找法在Java中用循环实现,要求数组升序排列,通过维护left和right边界、比较mid元素并更新边界来查找目标,未找到返回-1;需注意边界更新、中点防溢出及空数组处理。

二分查找法在 Java 中用循环实现,核心是不断缩小查找范围,每次比较中间元素,直到找到目标或确定不存在。关键前提是数组必须升序排列,否则结果不可靠。
基本循环结构(升序数组)
使用 while 循环维护左右边界 left 和 right,每次计算中点 mid 并比较:
- 如果
arr[mid] == target,返回mid(找到) - 如果
arr[mid] ,说明目标在右半边,更新 <code>left = mid + 1 - 如果
arr[mid] > target,说明目标在左半边,更新right = mid - 1 - 循环结束(
left > right)时未找到,返回-1
完整可运行代码示例
// 假设 arr = {1, 3, 5, 7, 9, 11}, target = 7
public static int binarySearch(int[] arr, int target) {
int left = 0;
int right = arr.length - 1;
<pre class="brush:php;toolbar:false;">while (left <= right) {
int mid = left + (right - left) / 2; // 防止整数溢出
if (arr[mid] == target) {
return mid;
} else if (arr[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1; // 未找到}
立即学习“Java免费学习笔记(深入)”;
注意事项和常见陷阱
-
边界更新别写错:
left = mid + 1和right = mid - 1必须加减 1,否则可能死循环 -
中点计算推荐用
left + (right - left) / 2,避免(left + right)大数溢出 -
循环条件用
left,确保单个元素区间也能检查 - 数组为空或
null时需提前判空,避免NullPointerException或越界


















