void Find(int arr[3][3], int *x, int *y, int key)
{
int m = 0;
int n = *y - 1; //和右上角的值作比较
while (x < *x&&y >= 0)
{
if (arr[m][n] < key)
{
m++;
}
else if (arr[m][n]>key)
{
n--;
}
else if (arr[m][n]==key)
{
*x = m;
*y = n;
return;
}
else{
*x = -1;
*y = -1;//在矩阵中找不到这个数组,返回-1,-1
}
}
}
int main()
{
int arr[3][3] = { 1, 3, 4, 2, 4, 5, 4, 5, 6 };
int x = 3;
int y = 3;
int key = 2;
Find(arr, &x, &y, key);
printf("%d,%d", x, y);
system("pause");
return 0;
}
有一个二维数组. 数组的每行从左到右是递增的,每列从上到下是递增的. 在这样的数组中查找一个数字是否存在。 时间复杂度小于O(N); 数组: 1 2 3 2 3 4 3 4 5
最新推荐文章于 2020-11-09 22:25:58 发布