0
点赞
收藏
分享

微信扫一扫

杨氏矩阵查找算法实现

杨氏矩阵介绍

杨氏矩阵简单来说就是一个矩阵的数字从左往右数,从上往下数都是递增的,这里我们将用c语言实现在杨氏矩阵中查找指定数字。

杨氏矩阵查找算法c语言代码实现

解决问题的关键就是矩阵右上角数字的应用,要查找的数字如果比右上角数字大,那么那一行都比指定的数字小此行消去,如果指定的数字比右上角的数字小,那么那一列就不用再查找此列消去,重复上述操作,矩阵向内部收缩,下列是代码实现。

//杨氏矩阵
#include <stdio.h>
int FindNum(int arr[3][3], int k, int* p1, int* p2)
{
    int x = 0;
    int y = *p2-1;
    while(x <= *p1-1 && y >= 0)
    {
        if(arr[x][y] > k)
        {
            y--;
        }
        else if(arr[x][y] < k)
        {
            x++;
        } else{
            *p1 = x;//得到下标行位置
            *p2 = y;//得到下标列位置
            return 1;
        }

    }
    return 0;
}
int main()
{
    int arr[3][3] = {{1,2,3}, {4,5,6}, {7,8,9}};
    int k = 7;
    int x = 3;
    int y = 3;
    int ret = FindNum(arr, k, &x, &y);
    if(ret == 1)
    {
        printf("找到了\n");
        printf("下标是:%d %d\n", x , y);
    } else{
        printf("找不到");
    }
    return 0;
}
举报

相关推荐

0 条评论