编程题
某个矩阵,每行从左到右递增,矩阵从上到下递增
编写程序在这样的矩阵中查找某个数字是否存在
要求:时间复杂度小于O(N)
O(N) - 查找的次数最坏的情况下是N次
N*N N*(N-1) ---O(N^2)
1/2/5/k次 --O(1)
#define ROW 3
#define COL 3
int find_num(int arr[ROW][COL], int* px, int* py, int key)
{
int row = *px;
int col = *py;
int x = 0;
int y = col - 1;
while (x < row && y >= 0)
{
if (arr[x][y] < key)
{
x++;
}
else if (arr[x][y] > key)
{
y--;
}
else
{
*px = x;
*py = y;
return 1; //找到了
}
}
return 0; //找不到
}
int main()
{
int arr[ROW][COL] = { 1,2,3,4,5,6,7,8,9 };
int key = 9;
int x = 3;
int y = 3;
if (find_num(arr, &x, &y, key))
{ //&x,&y
1.传入参数
2.带回结果
printf("找到了,坐标是[%d][%d]\n",x,y);
}
else
{
printf("找不到\n");
}
return 0;
}