用java写一个二分法
时间: 2023-06-19 07:06:33 浏览: 83
下面是一个使用 Java 编写的二分查找算法的例子:
```java
public class BinarySearch {
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;
}
public static void main(String[] args) {
int[] arr = { 2, 4, 6, 8, 10, 12, 14, 16 };
int key = 10;
int index = binarySearch(arr, key);
if (index != -1) {
System.out.println("Element found at index " + index);
} else {
System.out.println("Element not found in the array");
}
}
}
```
在上面的例子中,我们定义了一个 `binarySearch` 方法,该方法接受一个整数数组和一个整数 `key`,并返回 `key` 在数组中的索引,如果 `key` 不在数组中,则返回 -1。
在方法中,我们使用 `low` 和 `high` 变量来跟踪搜索范围的两个端点。在每次循环中,我们计算中间点 `mid`,并将其与 `key` 进行比较。如果 `key` 小于 `arr[mid]`,则说明 `key` 可能在左半部分,我们将 `high` 设置为 `mid - 1`;如果 `key` 大于 `arr[mid]`,则说明 `key` 可能在右半部分,我们将 `low` 设置为 `mid + 1`;否则, `key` 等于 `arr[mid]`,我们找到了它,返回 `mid`。
最后,我们使用主函数测试 `binarySearch` 方法,我们定义了一个数组 `arr` 和一个整数 `key`,并调用 `binarySearch` 方法来查找 `key` 在数组中的索引。如果返回的索引不是 -1,则打印 "Element found at index ",否则打印 "Element not found in the array"。
阅读全文