有一个二维数组,
数组的每行从左到右是递增的,每列从上到下是递增的,
在这样的数组中查找一个数字 x 是否存在。
这就是杨氏矩阵的查找问题。
比较简单的一种处理方法是,从右上角开始搜索
- 如果x比当前位置的值要小,向左搜索
- 如果x比当前位置的值大,就往下移一行,再重复步骤1
- 如果下标越界,则停止查找,返回查找失败的信息
- 否则返回查找成功的信息
程序代码如下:
int SearchYoungTableau(int m[Rank][Rank], int x) {
int row = 0;
int col = Rank - 1;
while (1) {
if (col < 0 || row > Rank - 1)
return 0;
if (x < m[row][col])
col--;
else if (x > m[row][col])
row++;
else
return 1;
}
}