温馨提示×

温馨提示×

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

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

Binary Search在Java数组中如何工作

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

二分查找(Binary Search)是一种在有序数组中查找特定元素的搜索算法。它的工作原理是将目标值与数组中间元素进行比较,如果目标值等于中间元素,则搜索成功;如果目标值小于或大于中间元素,则在数组的小于或大于中间元素的那一半中查找,而且同样在该子数组的中间元素进行比较。这个过程会一直重复,直到找到目标值,或者搜索区间为空(即目标值不存在于数组中)。

以下是二分查找在Java数组中的实现步骤:

1. 初始化

  • 确定搜索区间的起始索引 low 和结束索引 high。初始时,low 为数组的第一个元素的索引(通常是0),high 为数组的最后一个元素的索引(length - 1)。

2. 循环查找

  • low 小于或等于 high 时,执行以下步骤:
    • 计算中间索引 midmid = low + (high - low) / 2。这样可以避免直接相加可能导致的整数溢出。
    • 比较目标值 target 与数组中间元素 array[mid]
      • 如果 target == array[mid],则找到目标值,返回 mid
      • 如果 target < array[mid],则目标值必定在 mid 的左侧,更新 high = mid - 1
      • 如果 target > array[mid],则目标值必定在 mid 的右侧,更新 low = mid + 1

3. 结束条件

  • 如果循环结束时仍未找到目标值(即 low > high),则返回一个表示未找到的值(通常是 -1)。

示例代码

以下是一个简单的Java实现:

public class BinarySearchExample {
    public static int binarySearch(int[] array, int target) {
        int low = 0;
        int high = array.length - 1;

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

            if (array[mid] == target) {
                return mid; // 找到目标值,返回索引
            } else if (array[mid] < target) {
                low = mid + 1; // 目标值在右侧
            } else {
                high = mid - 1; // 目标值在左侧
            }
        }

        return -1; // 未找到目标值
    }

    public static void main(String[] args) {
        int[] array = {1, 3, 5, 7, 9, 11, 13};
        int target = 7;
        int result = binarySearch(array, target);
        if (result != -1) {
            System.out.println("目标值 " + target + " 在数组中的索引为: " + result);
        } else {
            System.out.println("目标值 " + target + " 未在数组中找到");
        }
    }
}

注意事项

  • 二分查找要求数组必须是有序的。
  • 如果数组中有重复元素,二分查找可能返回其中任意一个匹配元素的索引。
  • 在实际应用中,可以根据具体需求对二分查找进行优化或变种处理。

通过上述步骤和示例代码,可以清晰地理解二分查找在Java数组中的工作原理和实现方法。

向AI问一下细节

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

AI