杨氏矩阵是将数字按由上到下由左到右按顺序排列的方式,通过杨氏矩阵来寻找数字可以利用他的特点进行快速有效的查找。
杨氏矩阵 1 2 3
4 5 6
7 8 9
例如 在其中寻找7,为了使xun'寻找更有效,可以利用矩阵中每一行的zui'最大值在每行的最右边,每一列的最小值在每一列的最上面,利用这个特点,进行排除查找,减少查找的时间,是查找效率更高。
在下面这个函数中,正是利用了这个特点,先定义一个二维数组,然后将x和y的地址传到所调用的函数中去,再将所要寻找的数放进所定义的函数中去,然后使寻找从右上角开始,如果右上角的值比所要寻找的数小,则说明这一行没有这个数,然后跳到下一行,如果大于这个值,则说明在不这一列,列数减一,跳到下一列,以此类推,最终找到数
#include<stdio.h>
int fun(int arr[3][3],int *px, int *py,int k)
{
int x = 0;
int y = *py-1;
while (y>= 0 && x < *px)
{
if (arr[x][y] < k)
x++;
else if (arr[x][y]>k)
y--;
else
{
*px = x;
* py= y;
return 1;
}
}
return 0;
}
int main()
{
int arr[3][3] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int x = 3;
int y = 3;
int k = 1;
int rat = fun(arr,&x, &y,k);
if (rat == 1)
printf("找到了");
else
printf("没找到");
system("pause");
return 0;
}