📜  二进制搜索升序排序数组 - Java (1)

📅  最后修改于: 2023-12-03 15:36:03.991000             🧑  作者: Mango

二进制搜索升序排序数组 - Java

二进制搜索是一种查找特定值的有效方法。它适用于已排序的数组或列表,并且比线性搜索更快。

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) {
            left = mid + 1;
        } else {
            right = mid - 1;
        }
    }
    return -1; // 如果未找到,则返回-1
}

在这个示例代码中,使用了一个while循环,它将数组分成两半,并检查中间元素。如果目标值等于中间元素,那么搜索就结束了。如果目标值小于中间元素,则说明目标值可能在左侧,更改right值以收缩范围。如果目标值大于中间元素,则说明目标值可能在右侧,更改left值以收缩范围。循环直到找到目标值或搜索范围为空。

二进制搜索的时间复杂度为O(log n),其中n是数组的大小。这使得它成为查找大型数组中特定值的有效方法。

总之,二进制搜索是一种查找特定值的强大方法,适用于已排序的数组。Java中提供了递归和循环实现它的方式。