开发者社区> 问答> 正文

Arrays.binarySearch()返回错误的插入点

这是代码:

public class Main {

public static Scanner scanner = new Scanner(System.in);

public static void main(String[] args) throws IOException {

    int arr[] = {10,50,999,1000};
    int index = Arrays.binarySearch(arr,55);
    System.out.println(index);
}

}

如果此公式“(-(插入点)-1)”的输出表示插入点为“ 4”,则输出为“ -3”,这是不正确的。

那正确的是什么?


问题来源:stackoverflow

展开
收起
七天一失眠 2020-04-04 18:29:17 1535 0
1 条回答
写回答
取消 提交回答
  • 做一个优秀的阿里云志愿者

    插入点2不是4。

    根据官方文件:

    的插入点被定义为将键插入到阵列的点:指数所述的第一元件更大的比键[...]

    您的索引数组为

    [10, 50, 999, 1000] 0 1 2 3 第一元件大于55是999在索引2。请记住,索引从开始计数0。

    因此插入点是2。因此,使用公式(-(insertion point) - 1),返回值必须为:

    (-(2) - 1) = -3 正是您所得到的。

    答案来源:stackoverflow

    2020-04-04 18:40:07
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载