杨氏矩阵中查找数
介绍:一组数从左向右递增,从上相下递增。
方法:在矩阵中以右上角作为起点,则矩阵向左数据变小,向下数据变大,我们只需要控制横纵下标,便可以找到此数,
int Find(int a[][3], int x, int y, int n)
{
int i = 0;
int j = y - 1;
while (i < x&&j >= 0)
{
if (n < a[i][j])//矩阵的数大于查找的数,我们向左找
j--;//列数减一
else if (n > a[i][j])//矩阵的数大于查找的数,我们向下找
x++;//行数加1
else
return 1;//找到返回1
}
return -1;//未找到-1
}
void main()
{
int a[][3] = { 1,2,3,4,5,6,6,7,8,9 ,13,15};/二维数组根据列数,自动确定行数,每3个一行。列数必须有,行数可以没有
int x = 10;
int res=Find(a, 4, 3, x);
if (res>0)
printf("Founded\n");
else
printf("Unfounded\n");
}