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

Java函数如何实现二分查找算法

发布时间:2023-05-22 11:12:35

二分查找算法,也称为折半搜索,是一种用于在已排序数组中查找给定值的快速算法。它的思想是将数组分成两半,然后与目标值进行比较,如果目标值大于中间值,则在右半部分查找,否则在左半部分查找,以此类推,直到找到目标值为止。

Java语言提供了多种方法实现二分查找算法。以下介绍两种常见的方法:

1.递归方法实现二分查找

递归方法实现二分查找需要对数组进行递归调用,将查找范围不断缩小。具体步骤如下:

①先确定好需要查找的目标值。

②设置开始查找的下标与结束查找的下标。

③将需要查找的区间分成两半,即中间的下标mid。

④比较目标值与数组中mid位置的值的大小,若目标值小于mid位置的值,则查找范围调整为左半区间;否则查找范围调整为右半区间。

⑤递归调用,重复上述步骤,直到找到目标值。

代码示例:

public static int binarySearch(int[] arr, int target, int start, int end) {

    if (start > end) {

        return -1;

    }

    int mid = (start + end) / 2;

    if (arr[mid] == target) {

        return mid;

    } else if (arr[mid] > target) {

        return binarySearch(arr, target, start, mid - 1);

    } else {

        return binarySearch(arr, target, mid + 1, end);

    }

}

2.非递归方法实现二分查找

非递归方法实现二分查找不需要进行递归调用,而是使用循环来实现。具体步骤如下:

①先确定好需要查找的目标值。

②设置开始查找的下标与结束查找的下标。

③判断是否找到目标值,若找到则跳出循环。

④将需要查找的区间分成两半,即中间的下标mid。

⑤比较目标值与数组中mid位置的值的大小,若目标值小于mid位置的值,则查找范围调整为左半区间;否则查找范围调整为右半区间。

代码示例:

public static int binarySearch(int[] arr, int target) {

    int start = 0, end = arr.length - 1;

    while (start <= end) {

        int mid = (start + end) / 2;

        if (arr[mid] == target) {

            return mid;

        } else if (arr[mid] > target) {

            end = mid - 1;

        } else {

            start = mid + 1;

        }

    }

    return -1;

}

总结

二分查找算法是基于有序数组的一种高效查找方式,适用于大规模数据的查找操作。Java语言中提供了多种方法实现二分查找,其中递归方法和非递归方法都能够实现其核心思想。对于大规模数据的查找操作,使用二分查找算法能够提高算法的效率和速度,降低时间复杂度。