二分查找算法
发布日期:2021-05-20 05:49:11 浏览次数:19 分类:精选文章

本文共 872 字,大约阅读时间需要 2 分钟。

二分查找是一种高效的查找算法,尤其适用于有序数组。它通过不断缩小查找范围来定位目标值的位置,时间复杂度为O(log n)。

二分查找的实现

public static int getIndex(int[] arr, int s) {
if (arr != null) {
int low = 0;
int high = arr.length - 1;
while (low <= high) {
int index = (low + high) / 2;
if (arr[index] == s) {
return index;
} else if (arr[index] < s) {
low = index + 1;
} else {
high = index - 1;
}
}
}
return -1;
}

代码解析

  • 初始化变量:定义lowhigh,分别表示当前查找范围的开始和结束索引。
  • 循环条件:当low小于等于high时,继续循环。
  • 计算中间索引:使用(low + high) / 2计算当前中间索引。
  • 查找元素:检查数组中间位置的值是否等于目标值s
    • 等于则返回当前索引。
    • 如果当前值小于s,说明目标值在右边的区间内,调整low
    • 否则,目标值在左边的区间内,调整high
  • 结束条件:当low大于high时,退出循环,表示查找范围无效,返回-1。
  • 适用场景

    • 在有序数据中快速定位特定元素。
    • 适用于数组长度较大的情况,减少线性搜索的时间复杂度。

    性能优势

    • 时间复杂度:O(log n),查找速度随数组长度指数级减少。
    • 空间复杂度:O(1),内部不使用额外空间。

    这段代码通过递归缩小查找范围,确保在有序数组中高效定位目标值。

    上一篇:kafka超时错误或者发送消息失败等错误,排错方式
    下一篇:Java中Math.round()方法的取整规则

    发表评论

    最新留言

    不错!
    [***.144.177.141]2025年05月05日 07时29分52秒