杨氏矩阵:有一个数字矩阵,矩阵的每行从左到右是递增的,矩阵从上到下是递增的,请编写程序在这样的矩阵中查找某个数字是否存在。
要求:时间复杂度小于O(N);
可以运用数组,也可以运用指针进行查找
void Find(int arr[3][3], int r, int c, int k)
{
int x = 0;
int y = c - 1;
int flat = 0;
while (x < r && y >= 0)
{
if (k > arr[x][y])
{
x++;
}
else if (k < arr[x][y])
{
y--;
}
else
{
printf("找到了,下标为%d,%d\n", x, y);
flat = 1;
break;
}
}
if (flat == 0)
{
printf("找不到\n");
}
}
int main()
{
int arr[3][3] = { 1,2,3,4,5,6,7,8,9 };
int k = 0;
scanf("%d", &k);
Find(arr, 3, 3, k);
return 0;
}