温馨提示×

温馨提示×

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

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

java二分搜索时间复杂度多少

发布时间:2026-10-23 14:23:35 来源:亿速云 阅读:91 作者:小樊 栏目:编程语言

在 Java 中,**二分搜索(Binary Search)**的时间复杂度是:

✅ 平均 / 最坏情况:O(log n)

✅ 最好情况:O(1)(第一次就找到)


说明

二分搜索要求数据必须是有序的(通常是升序数组)。

其核心思想是:

  1. 每次取中间元素
  2. 比较目标值
  3. 排除一半的搜索区间

每一轮搜索都将问题规模减半:

n → n/2 → n/4 → ... → 1

因此比较次数为:

log₂(n)

Java 中的二分搜索

1. Arrays.binarySearch(数组)

int index = Arrays.binarySearch(arr, target);
  • 时间复杂度:O(log n)
  • 空间复杂度:O(1)

2. Collections.binarySearch(List)

int index = Collections.binarySearch(list, target);
  • 时间复杂度:O(log n)(前提是 RandomAccess,如 ArrayList)
  • 若是 LinkedList,会先遍历,效率差

对比

搜索方式 时间复杂度
顺序搜索 O(n)
二分搜索 O(log n)
哈希表查找 O(1)

如果你愿意,我也可以帮你写 递归 / 非递归二分搜索代码,或解释 为什么必须是 sorted 的。

向AI问一下细节

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

AI
助
手