二维数组中查找某个数字
给定一个二维数组,其每一行从左到右递增排序,从上到下也是递增排序。给定一个数,判断这个数是否在该二维数组中。
如: 中找出数字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("无此数字"); }