//杨氏矩阵
有一个二维数组.
数组的每行从左到右是递增的,每列从上到下是递增的.
在这样的数组中查找一个数字是否存在。
时间复杂度小于O(N);
数组:
1 2 3
2 3 4
3 4 5
1 3 4
2 4 5
4 5 6
1 2 3
4 5 6
7 8 9
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
define rig 3
define lef 3
int Search(int arr[rig][lef],int k)
{
int i = 0;
int j = 2;
while (i <= 2 && j >= 0)
{
if (arr[i][j] == k)
{
return 1;
}
else if(arr[i][j] < k)
{
i++;
}
else if (arr[i][j] > k)
{
j--;
}
}
return 0;
}
int main()
{
int k = 0;
int arr[rig][lef] = {1,2,3,2,3,4,3,4,5};
scanf("%d", &k);
int ret = Search(arr, k);
if (ret == 0)
{
printf("杨氏矩阵中没有%d", k);
}
else if(ret == 1)
{
printf("杨氏矩阵中有%d", k);
}
system("pause");
return 0;
}