温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Binary Search在Java中如何应用

发布时间:2025-11-21 03:39:31 来源:亿速云 阅读:104 作者:小樊 栏目:编程语言

在Java中,二分查找(Binary Search)是一种高效的查找算法,适用于已排序的数组或列表。它的基本思想是通过不断缩小查找范围来快速定位目标元素。以下是二分查找在Java中的应用示例:

1. 非递归实现

public class BinarySearch {
    public static int binarySearch(int[] array, int target) {
        int left = 0;
        int right = array.length - 1;

        while (left <= right) {
            int mid = left + (right - left) / 2; // 防止溢出
            if (array[mid] == target) {
                return mid; // 找到目标元素,返回索引
            } else if (array[mid] < target) {
                left = mid + 1; // 目标在右半部分
            } else {
                right = mid - 1; // 目标在左半部分
            }
        }

        return -1; // 未找到目标元素
    }

    public static void main(String[] args) {
        int[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        int target = 7;
        int result = binarySearch(array, target);
        if (result != -1) {
            System.out.println("元素 " + target + " 在数组中的索引为: " + result);
        } else {
            System.out.println("元素 " + target + " 不在数组中");
        }
    }
}

2. 递归实现

public class BinarySearchRecursive {
    public static int binarySearch(int[] array, int target, int left, int right) {
        if (left > right) {
            return -1; // 未找到目标元素
        }

        int mid = left + (right - left) / 2; // 防止溢出
        if (array[mid] == target) {
            return mid; // 找到目标元素,返回索引
        } else if (array[mid] < target) {
            return binarySearch(array, target, mid + 1, right); // 目标在右半部分
        } else {
            return binarySearch(array, target, left, mid - 1); // 目标在左半部分
        }
    }

    public static void main(String[] args) {
        int[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        int target = 7;
        int result = binarySearch(array, target, 0, array.length - 1);
        if (result != -1) {
            System.out.println("元素 " + target + " 在数组中的索引为: " + result);
        } else {
            System.out.println("元素 " + target + " 不在数组中");
        }
    }
}

注意事项

  1. 数组必须是有序的:二分查找的前提是数组或列表已经排序。
  2. 防止溢出:计算中间索引时,使用 left + (right - left) / 2 而不是 (left + right) / 2,以防止整数溢出。
  3. 返回值:如果找到目标元素,返回其索引;如果未找到,返回 -1

通过以上两种实现方式,你可以在Java中应用二分查找算法来高效地查找已排序数组中的元素。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI