【JAVA】实现二维数组中的查找
程序员文章站
2022-03-14 22:54:34
...
在一个二维数组中(每个一维数组的长度相同)
每一行都按照从左到右递增的顺序排序,
每一列都按照从上到下递增的顺序排序。
请完成一个函数,输入这样的一个二维数组和一个整数,
判断数组中是否含有该整数。
提示:
如:
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
查找时从左下角开始查找,
题意是:从左往右递增,
从下往上递增(也就是从下往上递减)所以如大于左下角值,
则往右移动比较,如小则往上移动
实现代码如下:
import java.util.Scanner;
public class 二维数组查找 {
public static void main(String ars[]) {
Scanner s = new Scanner(System.in);
System.out.println("请输入数组行数和列数\n");
int x = s.nextInt();
int y = s.nextInt();
int[][] awarry = new int[x][y];// 初始化数组
System.out.println("请输入数组元素\n");
for (int i = 0; i < x; i++)// 循环输入
for (int j = 0; j < y; j++)
awarry[i][j] = s.nextInt();
System.out.println("你输入的数组为\n");
for (int i = 0; i < x; i++) {// 循环输出
for (int j = 0; j < y; j++)
System.out.print(awarry[i][j] + "\t");
System.out.println();
}
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数\n");
int t=sc.nextInt();
int r = 0;
int l = awarry.length - 1;
while (true) {
if (t == awarry[l][r]) {
System.out.println("数组中含有该元素");
break;
} else if (t > awarry[l][r] && r < awarry[l].length - 1) {
r++;
} else if (t < awarry[l][r] && l > 0) {
l--;
} else {
System.out.println("数组中不含该元素");
break;
}
}
}
}
输出如图:
上一篇: php 数组操作-删除指定数组元素
下一篇: php 正则表达式
推荐阅读