📅  最后修改于: 2023-12-03 15:15:58.648000             🧑  作者: Mango
二进制搜索(Binary Search)是一种高效的查找算法,它通过折半的方式不断缩小查找的范围,最终找到需要查找的元素。在Java中,我们可以通过递归或循环来实现二进制搜索。
算法思路:
以下是通过递归实现二进制搜索的Java代码片段。
/**
* 二进制搜索(递归实现)
* @param arr 查找的数组
* @param left 左边界
* @param right 右边界
* @param target 目标元素
* @return 目标元素在数组中的下标,如果不存在则返回 -1
*/
public static int binarySearch(int[] arr, int left, int right, int target) {
if (left > right) {
return -1;
}
int mid = left + (right - left) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] > target) {
return binarySearch(arr, left, mid - 1, target);
} else {
return binarySearch(arr, mid + 1, right, target);
}
}
以下是通过循环实现二进制搜索的Java代码片段。
/**
* 二进制搜索(循环实现)
* @param arr 查找的数组
* @param target 目标元素
* @return 目标元素在数组中的下标,如果不存在则返回 -1
*/
public static int binarySearch(int[] arr, int target) {
int left = 0;
int right = arr.length - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] > target) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return -1;
}
二进制搜索的时间复杂度为 O(log n),是一种非常高效的查找算法。但是,它只适用于有序数组,如果需要在无序数组中进行查找,我们可以先对数组进行排序,然后再使用二进制搜索。
二进制搜索是一种高效的查找算法,在Java中我们可以通过递归或循环来实现。它的时间复杂度为 O(log n),适用于有序数组。在实际应用中,我们可以先对数组进行排序,然后再使用二进制搜索来查找需要的元素。