在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否函数该整数。
public class Test { /** 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否函数该整数。 */ public static void main(String[] args) { int[][] arr = { {1, 3, 8, 9}, {3, 4, 9, 12}, {4, 7, 10, 13}, {6, 8, 11, 20}}; System.out.println(search(arr, 3)); } private static boolean search(int[][] arr, int value) { int a = arr[0].length; int b = arr.length; int i = 0; int j = a - 1; //从第一行最右边开始往左比较 while (i <= b - 1 && j >= 0) { //第一行最后一个元素等于传进来的值,存在,返回true //9 3 4 3 if (arr[i][j] == value) { return true; } //如果大于传进来的值就往左移动,看更小的值是否相等 //9 3 4 3 if (arr[i][j] > value) { j--; } else { //下一行比较 i++; } } //j<0 || i>b-1的时候 return false; }}