public static void main(String[] args) { int[][] arr={{1,2,3},{4,5,6},{7,8,9}}; Scanner sc=new Scanner(System.in); int k=sc.nextInt(); int ret=Fin_Num(arr,3,3,k); if(ret==1) System.out.println("找到了"); else System.out.println("找不到"); } /** * * @param arr 数组 * @param row 行 * @param col 列 * @param k 需要查找的数 * @return */ public static int Fin_Num(int[][]arr,int row,int col,int k){ /* 1 2 3 4 5 6 7 8 9 */ int x=0; int y=col-1; while(x<row && y>=0){ if(arr[x][y] == k) { System.out.println("下标为"+x+" "+y); return 1; }else if(arr[x][y] > k){ y--; }else{ x++; } } return 0; }
//列举:如果我输入的是8;当我输入的数比现在这个数9小时,就让y--,减去一列走到2 5 8 这一列.这就找到了8;如果我的是6的话,对于当前的9来说,6比9小,所以x++加一行走到4 5 6 这一行,就找到了6