定位法,时间复杂度O(m+n)。首先直接定位到最右上角的元素,再配以二分查找,比要找的数(6)大就往左走,比要找数(6)的小就往下走,直到找到要找的数字(6)为止,如下图所示:
//杨氏矩阵查找
int col = 4;
int row = 4;
bool young(int array[][col],int search)
{
int i = 0, j = col - 1;
int var = array[i][j];
while (true)
{
if (var == search)
return true;
else if (var < search && i < row - 1)
var = array[++i][j];
else if (var>search && j>0)
var = array[i][--j];
else
return false;
}
}