java 基础数据遍历(2)----二维数组查找
题目要求:
一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
输入描述:
array: 待查找的二维数组
target:查找的数字
输出描述:
查找到返回true,查找不到返回false。
解题思路:
1.确认使用for循环。
2.为避免重复输出结果,当找到和target值相等的array[][]时,立即跳出循环,并在循环外判断是否存在。
3.输出结果。
实际操作:
public static void main(String[] args) {
int[][] array={{1,2,3},
{2,3,4},
{3,4,5}};
boolean find=false ;
Scanner scanner =new Scanner(System .in);
System.out.println("请输入数字:");
int target=scanner .nextInt();//确认target的值
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
if (array[i][j]==target) {
find=true;//返回true.
i=array.length-1;
j=array[i].length-1;//当target数值等于array[i][j]时,立即跳出循环。
}
}
}if (find) {
System.out.println("存在数字:"+target);//在循环外判断target值是否存在,并输出结果。
}else {
System.out.println("不存在数字:"+target);
}
}
}
实际结果
思路扩展:
若修改本题的二维数组为:每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。且每个数字都不会重复出现。其他要求不改变。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
解题思路:
1.使用for循环
2.按数组的规律,为减少循环次数,决定从数组的左下角开始寻找与target的值相等的array[i][j]。
3.具体操作:先将target值与array[i][0]比较(i=array.length-1)。当target大于或等于array[i][0]时,开始向右比较target和数组的值。反之,若target小于或等于array[i][0]时,进入循环(i–),直至发现target大于或等于array[i][0]。
4.输出结果。
public static void main(String[] args) {
int[][] array={{1,2,3,4,5},
{6,7,8,9,10},
{11,12,13,14,15},
{16,17,18,19,20}};
boolean find=false;
int target =5;
int loopNum =0;
for (int i = array.length-1; i>-1; i--) {
if (target>=array[i][0]) {
for (int j = 0; j < array[i].length; j++) {
if (target==array[i][j]) {
find=true;
i=0;//跳出外循环
j=array[i].length-1;//跳出内循环
//找到数字后,立即跳出循环。
}
loopNum++;
}
i=0;//跳出外循环
}else {
loopNum++;
}
}if (find) {
System.out.println(target+" "+loopNum);
}else {
System.out.println("sorry"+loopNum);
}
}
}
实际结果:
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: thinkphp循环输出
- 下一篇: MFC Edit控件之enter回车捕捉