楊氏矩陣中找一個元素
阿新 • • 發佈:2018-12-18
要求時間複雜度小於O(n)
思路:
楊氏矩陣的特點是從左到右從上到下都是遞增的。
那麼就可以看我們要找的value是不是比一行的最大的一個數大,也就是最後一個數。
如果大,那就說明value可能在下一行,否則就在這一行尋找。
在行內尋找也是同樣。
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #define N 3 void Yang_array(int arr[N][N], int value) { int i = 0, j = N - 1; while ((i <= N - 1) && (j >= 0)) { if ((value<arr[0][0]) || (value>arr[N - 1][N - 1])) { printf("沒有找到!\n"); break; } if (value > arr[i][j]) { i++; } else if (value < arr[i][j]) { j--; } else if (value == arr[i][j]) { printf("%d的下標為%d,%d \n", value, i, j); break; } else { printf("沒有找到!\n"); break; } } } int main() { int arr[N][N] = { 1, 3, 4, 2, 3, 4,3, 4, 5 }; Yang_array(arr, 2); system("pause"); return 0; }