欢迎访问宙启技术站
智能推送

Java函数中实现二分查找的方法有哪些?

发布时间:2023-07-01 09:57:41

在Java中,有几种不同的方式可以实现二分查找算法。以下是其中一些常见的方法:

1. 递归实现:

public static int binarySearchRecursive(int arr[], int low, int high, int target) {
    // 检查边界条件
    if (high >= low) {
        int mid = low + (high - low) / 2;

        // 如果目标值与中间元素相等,则返回中间索引
        if (arr[mid] == target) {
            return mid;
        }

        // 如果目标值小于中间元素,则在左半部分递归查找
        if (arr[mid] > target) {
            return binarySearchRecursive(arr, low, mid - 1, target);
        }

        // 如果目标值大于中间元素,则在右半部分递归查找
        return binarySearchRecursive(arr, mid + 1, high, target);
    }

    // 如果没有找到目标值,则返回-1
    return -1;
}

2. 迭代实现:

public static int binarySearchIterative(int arr[], int target) {
    int low = 0, high = arr.length - 1;

    while (low <= high) {
        int mid = low + (high - low) / 2;

        // 如果目标值与中间元素相等,则返回中间索引
        if (arr[mid] == target) {
            return mid;
        }

        // 如果目标值小于中间元素,则在左半部分进行迭代查找
        if (arr[mid] > target) {
            high = mid - 1;
        }

        // 如果目标值大于中间元素,则在右半部分进行迭代查找
        else {
            low = mid + 1;
        }
    }

    // 如果没有找到目标值,则返回-1
    return -1;
}

这些方法都是基于二分查找算法的原理而实现的。在这些方法中,我们使用了数组的中间元素来判断目标值与当前元素的大小关系,并根据结果来决定在数组的哪一半进行下一次查找。在每次查找过程中,我们缩小搜索范围,直到找到目标值或确定目标值不存在为止。

总结起来,这些方法提供了在Java中实现二分查找算法的几种方式,无论是使用递归还是迭代。根据实际情况选择适合的方法可以提高代码的效率和可读性。