面试题四:二维数组中的查找

二维数组中,左到右递增,上到下递增,寻找数组中的一个数
方法一:暴力遍历,时间复杂度(n*n)
方法二:剔除法
1.选择右上角数字
2.如果数字大于要查的数字,说明整一列都大于要查找的数字,剔除列,直到小于或等于,如果等于就找到了
3.如果数字小于于要查的数字,从上面那样一列中,这一列表示每一行的最大值,剔除行,直到大于或等于,如果等于就找到了
4.否则重复2,剔除列

 1  boolean find(int [][]array ,int number ,int rows,int columns){
 2 
 3             boolean found=false;
 4             if(array!=null && rows>0 && columns>0){
 5                    int row=0;
 6                    int column=columns-1;
 7                     while(row<rows&& column>=0){
 8                          if(arrays[row][ column]==number){
 9                               found=true;
10                                 break;
11                                 }
12                          else if(arrays[row][ column]>number)
13                                column--;
14                           else 
15                               row++;
16 
17                     }
19               }
20           return found;
21 
22     }

 

posted @ 2020-03-29 14:15  浪波激泥  阅读(257)  评论(0编辑  收藏  举报