给定一个二维数组,其每一行从左到右递增排序,从上到下也是递增排序。给定一个数,判断这个数是否在该二维数组中。
如:图片说明 中找出数字7,我们可以选择遍历数组来查找,但效率极慢,但是我们经过观察发现,因为他是排好顺序的,所以,我们可以先从最右上角来开始查找,假如最右上角比要找的数字大,那么就说明这一列都比要找的数字大,可以把这一列去掉,以此类推,当右上角比要找的数字小,说明这一行都比要找的数字小了,那么我们可以把这一行给删除了,以此类推。具体代码如下:

 int[][] arrays={{1,2,8,9},{2,4,9,12},{4,7,10,13},{6,8,11,15}};
        int rows=arrays.length;
        int cols=arrays[0].length;
        int num=0;
        int r = 0, c = cols - 1; // 从右上角开始
        boolean flag=false;
        while (r <= rows - 1 && c >= 0) {
                if (num == arrays[r][c])
                {System.out.println("有此数字");
                flag=true;
                break;}
                else if (num > arrays[r][c])
                    r++;
                else
                    c--;
            }
        if(flag==false)
        {
            System.out.println("无此数字");
        }