You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何使用Arrays.binarySearch查找12时返回-6而非-1?

为什么Arrays.binarySearch查找不存在的12时返回-6而非-1?

先来看你的代码和运行结果:

代码示例:

int[] list = {2, 4, 7, 10, 11, 45, 50, 59, 60, 66, 69, 70, 79};
System.out.println("1. Index is " + Arrays.binarySearch(list, 11));
System.out.println("2. Index is " + Arrays.binarySearch(list, 12));

运行结果:

  1. Index is 4
  2. Index is -6

这其实是Arrays.binarySearch()的既定规则:当查找的元素不在有序数组中时,它不会返回简单的-1,而是返回-(插入点) - 1。这里的「插入点」指的是如果把目标元素插入数组后,仍能保持数组有序的位置索引(从0开始计数)。

针对你查找12的场景:

  • 数组里比12小的最后一个元素是11(索引为4),所以12的正确插入位置是索引5(夹在11和45之间)。
  • 套入公式计算:-(5) - 1 = -6,这就是最终返回-6的原因。

这个设计其实很实用——它不仅告诉你目标元素不存在,还直接给出了插入位置,省去了你后续再计算插入点的麻烦。

内容的提问来源于stack exchange,提问作者BlueJapan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:43:46