【发布时间】:2018-06-24 21:00:22
【问题描述】:
我的任务是创建递归二维二进制搜索函数,给定一个排序的二维数组。 它必须与一维数组完全一样,原理相同: 将首先检查数组的中间(如果它是 3x3,将首先检查索引 1,1 并像往常一样从那里继续。 感谢帮助。 对我说的唯一线索是将其视为一维数组,而不是将其实际转换为一维数组。
这是我目前所拥有的:
public static boolean binSearch(int[][] arr, int low, int high, int search) {
if(low>high)
return false;
int avg=(low+high)/2;
int i=(avg)/arr.length;
int j=(avg)%arr[0].length;
if(arr[i][j]==search)
return true;
if(arr[i][j]<search)
return binSearch(arr, avg+1, high, search);
if(arr[i][j]>search)
return binSearch(arr, low, avg-1, search);
return false;
}
public static boolean binSearch(int[][] arr, int search) {
return(binSearch(arr, 0, (arr.length*arr[0].length)-1, search));
}
public static void main(String[] args) {
int[][] arr= {{1,2,3},
{4,5,6}};
int search=4;
System.out.println(binSearch(arr, search));
}
我觉得我很接近,但并不完全在那里。 非常感谢!
【问题讨论】: