题3 二维数组中的查找

来源:互联网 发布:鼠标 知乎 编辑:程序博客网 时间:2024/06/14 23:47

题3 二维数组中的查找


题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。


分析:首先选取数组中右上角的数字。如果等于目标数字,结束。如果小于目标数字,剔除这个数字所在行。如果大于目标数字,剔除这个数字所在列。(也可选择左下角的数字,相似算法)


import java.util.Scanner;public class Find {public static void main(String[] args){Scanner scan = new Scanner(System.in);//初始化数组System.out.println("请输入数组行数:");int x = scan.nextInt();System.out.println("请输入数组列数:");int y = scan.nextInt();if(x > 0 && y > 0){int[][] array=new int[x][y];for(int i=0;i<x;i++){System.out.println("请输入数组第"+(i+1)+"行:");for(int j=0;j<y;j++){array[i][j]=scan.nextInt();}}//查找目标数字System.out.println("请输入要查找的数字:");int number=scan.nextInt();int row=0;int col=y-1;while(row<x && col>=0){if(array[row][col]==number){System.out.println("找到了!");return;}else if(array[row][col]>number){col--;}else{row++;}}System.out.println("找不到!");}else{System.out.println("输入有误!");}}}


测试用例:

1 2 8 9

2 4 9 12

4 7 10 13

6 8 11 15

7----找到了

5----找不到

原创粉丝点击