【问题标题】:Java Arrays binarySearch() insertion pointJava 数组 binarySearch() 插入点
【发布时间】:2016-12-12 21:30:26
【问题描述】:

根据 Arrays.binarySearch(int[] a, int key) 的 Java 文档

返回:

搜索键的索引,如果它包含在数组中; 否则,(-(插入点)- 1)。插入点定义为 将键插入数组的点:索引 大于键的第一个元素的长度,如果所有元素都为 a.length 数组中的值小于指定的键。请注意,这 保证返回值将 >= 0 当且仅当键 找到了。

我需要了解为什么它返回(-(insertion point) - 1),为什么不只是-(insertion point)

【问题讨论】:

    标签: java arrays binary-search


    【解决方案1】:

    因为如果它返回-(insertion point),并且插入点为0,那么你将无法区分我找到它,它在索引0处我没有'没有找到它,你可以在索引 0 处插入

    【讨论】:

      【解决方案2】:

      考虑一个数组:

      int intArr[] = {5,12,20,30,55};
      

      现在考虑这两个二分搜索语句:

      System.out.println("The index of element 5 is : " + Arrays.binarySearch(intArr,5));
      

      System.out.println("The index of element 4 is : " + Arrays.binarySearch(intArr,4));
      

      输出

      The index of element 5 is : 0
      The index of element 4 is : -1
      

      因为-1,我们可以区分这两个输出。如果没有-1,那么这两个语句都会给出相同的输出,即0

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-28
        • 2020-05-21
        • 2022-01-23
        • 2015-01-03
        相关资源
        最近更新 更多