Q3:二维数组中的查找

来源:互联网 发布:淘宝怎么选择服装公司 编辑:程序博客网 时间:2024/06/04 08:33

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)若小于要查找的数字,删除一行。

    */

   publicstaticvoid main(String[] args) {

      int[][] data =newint[4][4];

      data[0][0]=1;

      //........输入数组即可.......

      System.out.println(findNum(data, 7));

   }

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

   }

}
0 0
原创粉丝点击