</pre><p></p><pre name="code" class="cpp">
给定一个二维数组,每行递增,每列递增。
4 5 6 8
7 8 9 10
9 12 15 17
12 13 16 20
如 二维数组,随机给出的一个二维数组。
代码如下
boolen search(int *data,int rows,int columns,int number)
{
boolen find=flase;
if(data==NULL||cows<=0||colmuns<=0)
return flase
int row=0;
int colmun=colmun-1;
while(row<rows&&colmun>=0)
{
if(data[row*colmuns+colmun==number){ break;)
else if (data[row*colmuns+colmun>number)
colmun--;
else
row++:
}
return find;
}
每次比较矩阵最右边的数字,因为该数字较特殊,为该行的最大值,该列的最小值。每次每次循环通过比较待查的数,可以缩小矩阵的查找范围。
注意,二维数组中值定位运算。