本文主要是介绍有一个二维数组. 数组的每行从左到右是递增的,每列从上到下是递增的. 在这样的数组中查找一个数字是否存在。 时间复杂度小于O(N); 数组: 1 2 3 2 3 4 3 4 5,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!