以下是Java实现二分查找的代码,添加了便于快速记忆的注释和口诀:
代码实现(带注释)
public class BinarySearch {
// 二分查找:在有序数组中查找目标值
public int search(int[] nums, int target) {
int left = 0; // 左边界
int right = nums.length - 1; // 右边界(闭区间)
while (left <= right) { // 注意是 <=
int mid = left + (right - left) / 2; // 计算中间索引,防止溢出
if (nums[mid] == target) {
return mid; // 找到目标值,返回索引
} else if (nums[mid] < target) {
left = mid + 1; // 目标在右半部分,更新左边界
} else {
right = mid - 1; // 目标在左半部分,更新右边界
}
}
return -1; // 未找到目标值
}
}
记忆口诀
二分查找三步走,左右边界中间走
中间值比目标小,左边界就往右跳
中间值比目标大,右边界就往左靠
相等返回中间值,循环结束找不到
关键点记忆:
- 前提条件:数组必须有序
- 循环条件:
left <= right(闭区间) - 中间值计算:
mid = left + (right-left)/2(防止整数溢出) - 边界更新:
- 目标在右半部分:
left = mid + 1 - 目标在左半部分:
right = mid - 1
- 目标在右半部分: