java二分法
时间: 2025-04-29 12:56:46 浏览: 29
### Java 中实现二分法的示例代码及其解释
以下是基于提供的参考资料以及标准实践编写的 Java 二分查找算法的完整实现:
#### 示例代码
```java
public class BinarySearchExample {
public static int binarySearch(int[] array, int target) {
int low = 0; // 定义数组起始索引位置
int high = array.length - 1; // 定义数组结束索引位置
while (low <= high) { // 当前范围有效时继续执行
int mid = low + (high - low) / 2; // 防止溢出计算中间索引
if (array[mid] == target) { // 如果找到目标值,则返回其索引
return mid;
} else if (array[mid] < target) { // 若当前值小于目标值,在右半部分继续查找
low = mid + 1;
} else { // 否则在左半部分继续查找
high = mid - 1;
}
}
return -1; // 查找失败,返回-1表示未找到目标值
}
public static void main(String[] args) {
int[] sortedArray = {1, 3, 5, 7, 9, 11}; // 已排序的整数数组
int searchKey = 7;
int resultIndex = binarySearch(sortedArray, searchKey);
if (resultIndex != -1) {
System.out.println("Element found at index: " + resultIndex);
} else {
System.out.println("Element not found in the array.");
}
}
}
```
#### 代码解析
上述代码实现了经典的二分查找逻辑。具体如下:
- **初始化边界变量**:`low` 和 `high` 分别代表待查区间的起点和终点[^1]。
- **循环条件判断**:当 `low` 小于等于 `high` 时进入循环,确保区间始终合法[^2]。
- **防止溢出优化**:通过 `(low + high)/2` 的替代形式 `low + (high - low)/2` 来避免大数值相加可能引发的溢出问题[^3]。
- **比较与调整指针**:依据中间值与目标值的关系决定缩小左侧还是右侧搜索空间。
此版本采用迭代方式完成二分查找过程,相比递归方法更加节省栈内存资源。
---
### 时间复杂度分析
该算法的时间复杂度为 O(log n),其中 n 是输入数据规模大小。这是因为每次操作都将候选集合减半直到定位到所需项或者确认不存在为止。
---
阅读全文
相关推荐



















