欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【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;
			}
		}
	}
}

输出如图:
【JAVA】实现二维数组中的查找