• 二维数组查找


    题目描述

     
     
     
    在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
     
     根据题意输入的数组可能如下:

    对于这种情况可以直接折中查找,但是输入的数组更有可能是如下情况:

    对于这种情况直接折中就不太适用,但是根据题意可知,每一行的最小数字出现在最左边,每一列最小数据一定出现在最上方,我们可以根据此特性来排除数据。

    假设需要查找2.5,如果选取5与输入的数据比较,大于要查找的数目,则查找的数据必然不会出现在最后一列,可以排除一列,如图

    依次类推,可以每次排除一列.直到剩下两列,2小于2.5,无法排除2所在的列。

    然后根据行的最小数字进行判定,首先将5与2.5比较,大于2.5,可以排除最后一列

    依次类推,剩余两行两列时,判断2<2.5,判定2.5必然出现在第二行的1、2列,然后编列这两个数字,并未找到2.5,可以数组中没有出现此数字。

    代码:

     1 /*
     2  * 寻找二维数组内是否包含某一个数字
     3  */
     4 public class FindInArray {
     5 
     6     public Boolean Find(int target, int[][] array){
     7         Boolean found = false;
     8         int minRow = 0; 
     9         int maxColumn = array[0].length - 1;
    10         while(minRow<=array.length - 1 && 0<=maxColumn){
    11             if(array[0][0]>target || array[array.length - 1][maxColumn]<target){
    12                 break;
    13             } 
    14             if(array[minRow][maxColumn] == target ){
    15                 found = true;
    16                 break;
    17             }else if(array[minRow][maxColumn] > target){
    18                 maxColumn--;
    19             }else{
    20                 minRow++;
    21             }
    22         }
    23         return found;
    24     }
    25     /**
    26      * @param args
    27      */
    28     public static void main(String[] args) {
    29         // TODO Auto-generated method stub
    30         int[][] testArr = {{1,2,3,4,6},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20}};
    31         System.out.println(new FindInArray().Find(12,testArr));
    32     }
    33 
    34 }
    

      

  • 相关阅读:
    SecureCRT安装
    wmv12下安装centos7
    SpringMVC(十二):SpringMVC 处理输出模型数据之@ModelAttribute
    oracle之 redo过高诊断
    oracle之 手动创建 emp 表 与 dept 表
    oracle之 11.2.0.4 bbed安装
    oracle12c之 控制pdb中sga 与 pga 内存使用
    storm之 Storm 工作原理
    spark之 spark 2.2.0 Standalone安装、wordCount演示
    hadoop之 参数调优
  • 原文地址:https://www.cnblogs.com/feichangnice/p/7658516.html
Copyright © 2020-2023  润新知