您的位置:首页 > 其它

Q3:二维数组中的查找

2016-07-01 10:50 141 查看
publicclass Q3 {
   /**
    * 1、数组基础:数组是一种简单的数据结构,占据一块连续的内存并按照顺存储数据。创建数组时,先要指定数组的大小,然后根据大小分配内存。 即使为数组存储一个数字,也要预先分配内存。这样会导致:数组的空间效率比较低,使得空闲 的区域得不到很好的利用。
    * 2、由于内存联系,因此数组可以再O(1)时间读/写元素,时间效率较高。
    * 3、题目:二维数组中的查找
    * 4、题目说明:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的二维数组和一个整数,判断数组中是否含有该整数。
    * 5、题目分析:如下数组查找元素7,返回true,查找元素5返回false
    *1  2 8  9
    *2  4 9  12
    *4  7 10 13
    *6  8 11 15
    *
从左上角的数字开始判断,1)左上角的数字等于要查找的数组,则结束;
    * 2)若大于要查找的数字,删除一列;
    * 3)若小于要查找的数字,删除一行。
    */
   publicstatic
void
main(String[] args) {
      int[][] data =new
int
[4][4];
      data[0][0]=1;
      //........输入数组即可.......
      System.out.println(findNum(data, 7));
   }
   publicstatic
boolean
findNum(int array[][],int number){
      //判断数组是否合法
      if(array ==null){
         returnfalse;
      }
      int column = array[0].length-1;//求列的数目,从最大列开始
      int cow = 0;//记录行的数目,从第0行开始
      while(cow < array.length && column >= 0){
        
//左上角的数字正好是要查找的数字number
         if(array[cow][column] == number){
            returntrue;
         }
        
//左上角额数字小于要查找的数字number,删除一行
         if(array[cow][column] < number){
            cow++;
         }
        
//左上角的数字大于要查找的数字number,删除一列
         if(array[cow][column] > number){
            column--;
         }
      }
      returnfalse;
   }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: