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

Java函数:实现二分查找算法的方法

发布时间:2023-07-06 10:25:38

二分查找算法是一种在有序数组中查找指定元素的算法。它的基本思想是将数组分成两半,然后将目标值与中间元素进行比较,如果目标值等于中间元素,则找到了目标值;如果目标值小于中间元素,则在左半部分继续查找;如果目标值大于中间元素,则在右半部分继续查找。重复这个过程,直到找到目标值或者确定目标值不存在为止。

二分查找算法的实现可以使用递归或循环的方式。下面我将分别给出这两种实现方法。

1. 递归实现二分查找算法:

public static int binarySearch(int[] array, int target) {
    return binarySearch(array, target, 0, array.length - 1);
}

private static int binarySearch(int[] array, int target, int left, int right) {
    if (left > right) {
        return -1; // 目标值不存在
    }
    
    int mid = (left + right) / 2;
    
    if (array[mid] == target) {
        return mid; // 找到目标值
    } else if (array[mid] > target) {
        return binarySearch(array, target, left, mid - 1); // 在左半部分查找
    } else {
        return binarySearch(array, target, mid + 1, right); // 在右半部分查找
    }
}

2. 循环实现二分查找算法:

public static int binarySearch(int[] array, int target) {
    int left = 0;
    int right = array.length - 1;
    
    while (left <= right) {
        int mid = (left + right) / 2;
        
        if (array[mid] == target) {
            return mid; // 找到目标值
        } else if (array[mid] > target) {
            right = mid - 1; // 在左半部分查找
        } else {
            left = mid + 1; // 在右半部分查找
        }
    }
    
    return -1; // 目标值不存在
}

这两种实现方法的时间复杂度均为O(logN),其中N为数组的长度。二分查找算法由于其高效的查找效率,在大规模的数据集合中被广泛应用。但需要注意的是,二分查找算法的前提是数组已经有序,如果数组未经过排序,则需要先进行排序操作。