ITPub博客

首页 > 数据库 > 数据库开发技术 > 今日代码大赏 | Java 实现二分查找算法

今日代码大赏 | Java 实现二分查找算法

原创 数据库开发技术 作者:程序员鱼皮 时间:2024-04-13 22:50:31 0 删除 编辑

掌握高效的算法是每个开发者的必备技能。正如古代智者所言:“授人以鱼不如授人以渔。” 这句话告诉我们,掌握一项技能比单纯获得结果更有价值。

今天,我们继续来学习下算法,通过 Java 语言来实现一个简单而强大的算法 —— 二分查找。

首先为了加强大家对二分查找的认识,先来介绍下二分查找,二分查找算法是一种在有序集合中查找特定元素的算法。通过每次将集合分为两部分并比较中间元素,我们可以快速缩小搜索范围,从而提高查找效率。

下面是一个 Java 程序实现二分查找算法的示例代码:

public class BinarySearch {

    /**
     * 在有序数组中使用二分查找算法寻找目标值的索引
     * @param nums 有序数组
     * @param target 目标值
     * @return 目标值的索引,如果未找到则返回 -1
     */

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

        while (left <= right) {
            int mid = left + (right - left) / 2;
            if (nums[mid] == target) {
                return mid; // 找到目标值,返回其索引
            } else if (nums[mid] < target) {
                left = mid + 1; // 在右侧子数组中查找
            } else {
                right = mid - 1; // 在左侧子数组中查找
            }
        }

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

    public static void main(String[] args) {
        int[] nums = {2, 3, 4, 10, 40};
        int target = 10;
        int resultIndex = binarySearch(nums, target);

        if (resultIndex != -1) {
            System.out.println("元素 " + target + " 在数组中的索引是 " + resultIndex);
        } else {
            System.out.println("元素 " + target + " 不在数组中");
        }
    }
}

运行上述程序,如果数组 nums 包含元素 10,输出结果将会是:元素 10 在数组中的索引是 4

在这个例子中,我们首先将数组分为两半,然后递归地对每一半进行归并排序。接着,我们将两个已排序的子数组合并成一个有序数组。

二分查找算法的时间复杂度为 O(log n),其中 n 是数组的长度。这使得二分查找在处理大型数据集时非常高效。

今天的代码大赏就到这里。希望通过这篇文章,你能够对二分查找算法有一个更深入的理解。

如果大家还想看更多的不同语言实现的二分查找算法,欢迎在评论区留下自己的评论。

完整代码片段来源于代码小抄,欢迎点击进入小程序阅读!

在线访问:https://www.codecopy.cn/post/upbvxd

在代码小抄可以看到更多优质代码,也欢迎大家积极分享,可能会获得我们官方的小礼品 🎁~

往期推荐

今日代码大赏 | Java 实现快速排序算法

我成功复刻了安卓 6 的彩蛋!

今日代码大赏 | Java 使用递归反转句子

今日代码大赏 | Java 实现字符串转为日期

今日代码大赏 | Java 实现冒泡排序

原文作者:程序员鱼皮;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2023-12-20

  • 博文量
    330
  • 访问量
    151714