//杨氏矩阵 有一个二维数组. 数组的每行从左到右是递增的,每列从上到下是递增的. 在这样的数组中查找一个数字是否存在。 时间复杂度小于O(N); 数组: 1 2 3 2 3 4 3 4 5 1 3 4 2 4 5 4 5 6
#include<stdio.h> #include<windows.h> int search_function(int arr[][3], int key, int rows, int cols) { int row = 0; int col = cols - 1; while (row <= rows&&col >= 0) { if (key < arr[row][col]) { col--; } if (key>arr[row][col]) { row++; } if (key==arr[row][col]) { return 1; } } return 0; } int main() { int arr[3][3] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; int key; printf("please enter your num:"); scanf_s("%d\n", &key); int ret = search_function(arr, key, 3, 3); if (ret == 1) { printf("yes\n"); } if (ret == 0) { printf("no\n"); } system("pause"); return 0; }