(1)二维数组的查找
1.题目
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
2.思路
1.对第一列的数据遍历,发现index的数据小于target,index+1行的数据小于target,那么在index从头到尾查找数据
2.否则从第二列开始查找对应的index行
…
n.一直到最后一列遍历完没找到对应的数据则表示查找失败
3.代码
package test1_10;
/* * @author qianliu on 2019/2/18 20:10 * @Discription: * 1.题目:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序, * 每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数, * 判断数组中是否含有该整数。 * 2.解决思路: * (1)用数组的第一列比较,确定target在第index行是否可行 * (2)在index行一直从头到尾查找 */
public class test1 {
public static void main(String[] args) {
int[][] array ={{1,2,8,9},{4,7,10,13}};
System.out.println(Find(7,array));
}
/* * @author qianliu on 2019/2/18 20:28 * @param * @return * @Discription:思路:target>=array[0][i],则遍历array的i列 */
public static boolean Find(int target, int [][] array) {
//1.遍历数组的第一列,如果发现i行的第一列的数据>target,进入循环
for(int i=0;i<array[0].length;++i){
if(array[0][i]<=target) {
//2.进入循环,遍历第i行
for(int j=0;j<array.length;++j){
//遍历过程中三种情况:
//(1)小于target,则继续循环
//(2)等于target,找到结果,返回true
//(3)大于target,这一行遍历结束
if(array[j][i]<target){
continue;
}else if(array[j][i]==target){
return true;
}else{
break;
}
}
}
}
return false;
}
}