用java实现二分查找
时间: 2023-10-01 15:07:52 浏览: 37
下面是 Java 实现的二分查找算法:
```java
public static int binarySearch(int[] arr, int key) {
int low = 0;
int high = arr.length - 1;
while (low <= high) {
int mid = (low + high) / 2;
if (key < arr[mid]) {
high = mid - 1;
} else if (key > arr[mid]) {
low = mid + 1;
} else {
return mid;
}
}
return -1; // key not found
}
```
该方法接收一个有序数组和一个目标值作为参数,返回目标值在数组中的索引。如果目标值不在数组中,返回 -1。具体实现思路如下:
1. 初始化 `low` 和 `high` 分别为数组的第一个和最后一个元素的索引。
2. 循环执行以下步骤,直到 `low` 大于 `high`:
1. 计算 `mid`,即两个索引的平均值。
2. 如果目标值小于 `arr[mid]`,则将 `high` 更新为 `mid - 1`,因为目标值在 `mid` 的左边。
3. 如果目标值大于 `arr[mid]`,则将 `low` 更新为 `mid + 1`,因为目标值在 `mid` 的右边。
4. 如果目标值等于 `arr[mid]`,则返回 `mid`。
3. 如果循环结束仍未找到目标值,则返回 -1。
使用示例:
```java
int[] arr = {1, 2, 3, 4, 5};
int key = 3;
int index = binarySearch(arr, key);
System.out.println(index); // output: 2
```
阅读全文