二维数组优化查找数字
1.题目描述:
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成这样一个函数,输入这样的一个二维数组和一个整数,判断数组中是否包含该整数。
2.问题分析
从右上角开始比较,然后逐渐缩小查找范围。如下图所示:
代码如下:
public static boolean select(int [][] a,int number)
{
int h= 0;
int o = a[0].length-1;
boolean result = false;
for(int i=h;i<a.length;i++)
{
for(int j=o;j>=0;j--)
{
int k = a[i][j];
if(k==number)
{
result = true;
}
if(k<number)
{
h++;
break;
}
if(k>number)
{
o--;
continue;
}
}
}
return result;
}
一个简单的小算法,防止自己忘记,有想法不知道怎么打的也可以参考一下。如果有不对的地方欢迎大家指正!