题目描述
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
public class TestFind {
public static void main(String[] args) {
int[][] array = { { 1, 2, 3, 4, 5 },
{ 2, 2, 3, 4, 5 },
{ 3, 3, 6, 7, 8 },
{ 4, 4, 7, 8, 10 },
{ 5, 5, 8, 9, 11 } };
System.out.println(Find(7, array));
}
/**
* 暴力搜索
*/
public static boolean Find2(int target, int[][] array) {
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
if (array[i][j] == target) {
return true;
}
}
}
return false;
}
/**
* 左下角开始搜索 大则上移,小则右移
*/
public static boolean Find(int target, int[][] array) {
int i = array.length-1;
int j = 0;
while(i >= 0 && j < array[i].length){
if (target > array[i][j]){
System.out.println(target + ">" + "array[" + i + "][" + j + "]=" + array[i][j]);
j++;
}else if (target < array[i][j]){
System.out.println(target + "<" + "array[" + i + "][" + j + "]=" + array[i][j]);
i--;
}else{
System.out.println(target + "=" + "array[" + i + "][" + j + "]=" + array[i][j]);
return true;
}
}
return false;
}
}