剑指Offer(Java)-1-二维数组中的查找

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;
	    } 
	}        

  

原文地址:https://www.cnblogs.com/asaltydog/p/13949713.html