增量数组查找

来源:互联网 发布:网络打印机主机ip地址 编辑:程序博客网 时间:2024/05/16 10:07

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

如数组

int[][] a ={{1,2,8,9},

              {2,4,9,12}, 

             {4,7,10,13}, 

             {6,8,11,15}};

方法是按照数组的递增特性,从有上角或者左下角开始,分别和要查找的数num比较;

如从右上角开始, 如果num=a[i][j],则返回true

                            如果num>a[i][j],则去掉该行,因为该行所有数都会小于num;---即行增加1(i++)

                           否则,num<a[i][j],去掉该列,因为该列所有数都大于num;----即列减少1(j--)


这样就能缩小查找的范围

代码如下:

private static boolean find(int[][] a, int num) {// TODO Auto-generated method stubint row =a.length-1;int column=a.length-1;int i = 0,j = column;if((num<a[0][0])||(num>a[row][column])){return false;}else{while(i<=row&&j>=0){if(a[i][j]==num){return true;}else if(num>a[i][j]){i++;}else{j--;}}}return false;}




                                

0 0
原创粉丝点击