【问题标题】:I have the method below that gets a two-dimensional array and a value. The method check if the value be in the array or not我有下面的方法,它获取一个二维数组和一个值。该方法检查值是否在数组中
【发布时间】:2017-02-23 04:53:56
【问题描述】:

我有下面的方法,它获取一个二维数组和一个值。该方法检查值是否在数组中。

我不明白为什么我需要我用粗体突出显示的代码行 (if (m[i][m[i].length-1] .

看起来代码在没有这一行的情况下也可以工作......为什么我仍然需要这一行,有人可以解释一下吗?谢谢

public static boolean findValWhat (int[][] m, int val)
{
    for (int i = 0; i < m.length; i++) {
        **if (m[i][m[i].length-1] <= val){**
            if (binarySearch(m[i], val) == val){
                return true;
            }
        }
    }

    return false;

}

【问题讨论】:

  • 我想你浪费了一个额外的搜索调用,因为你的二分搜索函数不依赖于那个界限,但仍然受它的影响。

标签: java arrays binary-search


【解决方案1】:

没有它,代码仍然可以工作,但运行得更快。 假设您有这个排序的二维数组: [[1,2,3],[4,5,6],[7,8,9]] 然后您可以看到,如果您要搜索 8,则不需要对第一行进行二进制搜索,因为 3 小于 8,并且他是其中最大的数字。 你甚至可以通过二分查找而不是循环来使这段代码更糟。

【讨论】:

    猜你喜欢
    • 2018-06-27
    • 1970-01-01
    • 1970-01-01
    • 2017-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-03
    相关资源
    最近更新 更多