Java 我有下面的方法,可以得到一个二维数组和一个值。方法检查值是否在数组中
我有下面的方法,可以得到一个二维数组和一个值。方法检查值是否在数组中Java 我有下面的方法,可以得到一个二维数组和一个值。方法检查值是否在数组中,java,arrays,binary-search,Java,Arrays,Binary Search,我有下面的方法,可以得到一个二维数组和一个值。方法检查值是否在数组中 我不明白为什么我需要我用粗体突出显示的代码行(如果(m[I][m[I].length-1)],没有它,代码仍然可以工作,但会使它运行得更快。 假设您有一个已排序的二维数组: [[1,2,3],[4,5,6],[7,8,9]] 然后你可以看到,如果你在搜索8,你不需要对第一行进行二进制搜索,因为3比8小,他是其中最大的数字。 您甚至可以通过执行二进制搜索而不是循环来使此代码更出色。如果没有它,代码仍然可以工作,但会使它运行得更快
我不明白为什么我需要我用粗体突出显示的代码行(如果(m[I][m[I].length-1)],没有它,代码仍然可以工作,但会使它运行得更快。 假设您有一个已排序的二维数组: [[1,2,3],[4,5,6],[7,8,9]] 然后你可以看到,如果你在搜索8,你不需要对第一行进行二进制搜索,因为3比8小,他是其中最大的数字。
您甚至可以通过执行二进制搜索而不是循环来使此代码更出色。如果没有它,代码仍然可以工作,但会使它运行得更快。 假设您有一个已排序的二维数组: [[1,2,3],[4,5,6],[7,8,9]] 然后你可以看到,如果你在搜索8,你不需要对第一行进行二进制搜索,因为3比8小,他是其中最大的数字。
您甚至可以通过执行二进制搜索而不是循环来使这段代码更出色。我假设您浪费了一个额外的搜索调用,因为您的二进制搜索函数不依赖于该边界,但仍然受到它的影响。我假设您浪费了一个额外的搜索调用,因为您的二进制搜索函数不依赖于该边界,但仍然受其影响受它的影响。
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;
}