首先选取数组中右上角的数组。
1、如果该数字等于要查找的数字,则查找过程结束,返回true。
2、如果该数字大于要查找的数字,则剔除掉这个数字所在的列。
3、如果该数字小于要查找的数字,则剔除掉这个数字所在的行。
直到找到数字,或者查找范围为空(row < array.length && column >= 0)。
功能测试:
1. 二维数组中包含要查找的数字。
2. 二维数组中不包含要查找的数字。
3. 输入空指针。
public boolean Find(int target, int [][] array) {
if (array == null) {
return false;
}
int row = 0; //数组的行数
int column = array[0].length-1; //数组的列数
while (row < array.length && column >= 0) {
if(array[row][column] == target) {
return true;
}
if(array[row][column] > target) {
column--; //剔除掉一列
} else {
row++; //剔除掉一行
}
}
return false;
}
}
方法二:暴力法(直接两个for循环)
public class test_four {
public boolean Find(int target,int[][] array){
int row = array.length;
if(row<=0){
return false;
}else{
for(int i=0; i<row; i++){
int column = array[i].length;
for(int j=0; j<column; j++){
if(array[i][j] == target){
return true;
}
}
}
}
return false;
}
}