📅  最后修改于: 2023-12-03 14:42:55.779000             🧑  作者: Mango
二分查找(Binary Search),也称折半查找,是一种算法思想,常用于在有序数组中查找某一特定元素。二分查找的时间复杂度为 $O(log_2(n))$,比线性查找的时间复杂度 $O(n)$ 更快。
以下是一个简单的 Java 代码实现,其中 binarySearch()
方法为二分查找的核心方法。该方法接收两个参数,第一个是有序数组 arr,第二个是需要查找的元素 target。如果 target 在 arr 中,则返回其下标;否则返回 -1。
public class BinarySearch {
/**
* 二分查找核心方法
*
* @param arr 有序数组
* @param target 需要查找的元素
* @return target 在 arr 中的下标,若不存在,则返回 -1
*/
public static int binarySearch(int[] arr, int target) {
int left = 0;
int right = arr.length - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
public static void main(String[] args) {
int[] arr = {1, 3, 5, 7, 9};
int result1 = binarySearch(arr, 5);
int result2 = binarySearch(arr, 4);
System.out.println(result1); // 输出 2
System.out.println(result2); // 输出 -1
}
}
注意,数组 arr 必须是有序的,否则无法得到正确的结果。可以使用 Arrays 类的 sort() 方法预先对数组进行升序排序。
二分查找是一种快速查找有序数组中元素的方法,可以有效降低时间复杂度。但前提是必须先对数组进行排序。在实际场景中应用广泛,比如在数据库索引、路由表查找等领域均有应用。