public static boolean Find(int target, int [][] array) { if(array==null||array[0].length==0){ return false;//数组非空判断 } if (array[0][0]> target) { return false; } int a=array.length; int b=array[0].length; int c=0;//从第一行最后一个元素开始作比较 while(true){ //按二维数组右上角做二分 if(array[c][b-1]==target){ return true; } else if(array[c][b-1]>target){ //最右上角的值大于目标值,则不比较最后一列的其他值 b=b-1; if(b-1<0){ break; } } else if(array[c][b-1]<target){ //最右上角的值小于目标值,则不比较第一行的值, c=c+1; if(c==a){ break; } } } return false; } }