首页 > 数据库 > 数据库开发技术 > 今日代码大赏 | Java 实现二分查找算法
掌握高效的算法是每个开发者的必备技能。正如古代智者所言:“授人以鱼不如授人以渔。” 这句话告诉我们,掌握一项技能比单纯获得结果更有价值。
今天,我们继续来学习下算法,通过 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 实现字符串转为日期
原文作者:程序员鱼皮;如有侵权,请联系管理员删除。