定位法,時間複雜度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;
}
}