java二分法查找
时间: 2025-03-17 22:14:17 浏览: 45
### Java中实现二分法查找的代码示例
以下是基于提供的参考资料以及标准实现方式的一个完整的Java二分法查找代码示例:
```java
public class BinarySearchExample {
public static int binarySearch(int[] array, int target) {
int left = 0;
int right = array.length - 1;
while (left <= right) {
// 计算中间位置,防止溢出使用 (right - left) / 2 + left 替代 (left + right) / 2
int mid = left + (right - left) / 2;
if (array[mid] == target) {
return mid; // 找到目标值,返回索引
} else if (array[mid] < target) {
left = mid + 1; // 目标值在右半部分
} else {
right = mid - 1; // 目标值在左半部分
}
}
return -1; // 如果找不到目标值,则返回 -1
}
public static void main(String[] args) {
int[] sortedArray = {-1, 0, 3, 5, 9, 12}; // 已排序数组
int targetValue = 9;
int resultIndex = binarySearch(sortedArray, targetValue);
if (resultIndex != -1) {
System.out.println("目标值 " + targetValue + " 的索引为:" + resultIndex); // 输出应为4
} else {
System.out.println("未找到目标值!");
}
}
}
```
#### 关于上述代码的关键点解释:
- **输入条件**:二分法查找的前提是数组必须已经按照升序排列[^3]。
- **边界处理**:通过`while (left <= right)`循环来确保不会错过任何可能的位置[^5]。
- **防溢出计算**:为了避免`(left + right)/2`可能导致的大整数溢出问题,采用了`mid = left + (right - left) / 2`的方式[^4]。
此代码实现了基本的需求描述,并提供了清晰的时间复杂度分析——O(log n),其中n表示数组大小[^2]。
---
###
阅读全文
相关推荐

















