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

Java中实现二分查找算法的函数代码是什么?

发布时间:2023-05-19 01:19:45

二分查找是一种常用的查找算法,也叫折半查找算法。它是一种对于有序数据的二分查找,将查找范围不断缩小为原来的一半,直到找到目标元素或者确定该元素不存在。下面是Java中实现二分查找算法的函数代码。

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

    int low = 0, high = arr.length - 1;

    while (low <= high) {

        int mid = (low + high) >>> 1;

        int midVal = arr[mid];

        if (midVal < key) {

            low = mid + 1;

        } else if (midVal > key) {

            high = mid - 1;

        } else {

            return mid;

        }

    }

    return -1;

}

这里我们定义了一个名为binarySearch的函数,该函数接收两个参数,arr为待查找数组,key为查找目标值。然后将待查找数组的左右指针赋值为0和数组长度减1。

接着进入while循环,只要左指针小于等于右指针,就会执行循环中的代码。其中符号“>>>”是Java中的位运算符,用于逻辑位移,效果与“() >> 1”相同,但可以避免使用负数时出现歧义。

在循环中,首先需要计算中间位置下标,这里使用“>>>”运算,将整数除以2后向下取整,再将结果赋值给变量mid。之后,从数组中获取mid位置处的元素,与目标值进行比较。

如果中间位置的值小于目标值,说明需要在中间位置右侧查找,将左指针移到mid+1处;如果中间位置的值大于目标值,说明需要在中间位置左侧查找,将右指针移到mid-1处。如果中间位置的值与目标值相等,说明找到了目标值,返回mid。

如果while循环结束时还未找到目标值,说明待查找数组中不存在该值,返回-1表示查找失败。

总的来说,二分查找算法是一种高效的查找算法,在有序数组中的查找效率非常高。对于大规模的数据集合,它的算法复杂度不超过O(log n),可以帮助我们快速地查找目标值。