概述
#include <stdio.h>
int Findnum(int arr[3][3], int k, int* px, int* py)
{
//123
//456
//789
//杨氏矩阵模型可用
int x = 0;
int y = *py - 1;//必须从右上角或者左下角开始,这里以右上角为例
//意思就是,一行的最大数同时也是一列的最小数,或者一行的最小数,一列的最大数
while (y >= 0 && x <= *px-1)
{
if (arr[x][y] > k)
{
y--;//如果数字大于要找的数字,则说明要找更小的,那么就左令坐标左移
}
else if (arr[x][y] < k)
{
x++;//如果数字小于要找的数字,那么就令坐标下移,去找更大的
}
else
{//如果找到了,则保存下来此时的下下x,y坐标,传回主函数中
*px = x;
*py = y;
return 1;//返回1表示找到了目标数字
}
}//若循环结束后还是没找到就返回0
return 0;
}
int main()
{
int arr[3][3] = { {1,2,3},{4,5,6},{7,8,9} };//建立好一个杨氏矩阵数组
int k = 7;//随机定义一个要找的数字
int x, y;
x = y = 3;//行和列的长度
int ret = Findnum(arr, k, &x, &y);//把下x,y的地址传进函数,可以得到坐标位置
//返回值搞不定的时候,传地址过去
if (ret)
{
printf("下标是%d %dn", x, y);
printf("找到了");
}
return 0;
}
//每次未找到目标数字,都是以行或列的大小排除,比一般的遍历方法更加高效
最后
以上就是强健胡萝卜为你收集整理的关于我个人对杨氏矩阵算法的理解的全部内容,希望文章能够帮你解决关于我个人对杨氏矩阵算法的理解所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复