C语言实现-杨氏矩阵

来源:互联网 发布:淘宝家居排行榜 编辑:程序博客网 时间:2024/05/21 03:24

//杨氏矩阵
有一个二维数组.
数组的每行从左到右是递增的,每列从上到下是递增的.
在这样的数组中查找一个数字是否存在。
时间复杂度小于O(N);
数组:
1 2 3
2 3 4
3 4 5

1 3 4
2 4 5
4 5 6

#include<stdio.h>#include <windows.h>int fand(int arr[][3], int a,int row, int col){    int i = 0;    int j = col;    for (; i < row;)    {        for (j--; j >= 0;)        {            if (arr[i][j] == a)            {                return 1;            }            else if (arr[i][j] > a)            {                j--;            }            else if (arr[i][j] < a)            {                i++;            }        }    }    return 0;}int main(){    int arr[3][3] = {        {1, 2, 3},        {4, 5, 6},        {7, 8, 9},    };    int a = 0;    int row;    int col;    row = (sizeof(arr) / sizeof(arr[0][0])) / 3;    col = row;    printf("请输入要查找的数:");    scanf_s("%d", &a);    if (fand(arr, a, row, col))    {        printf("%d 存在!\n", a);    }    else     {        printf("%d 该数不存在!\n",a);    }    system("pause");    return 0;}