楊氏矩陣是乙個二位陣列,這個陣列無論橫向縱向都是遞增的。
比如陣列
1 4 7要想時間複雜度小於o(n)就不能遍歷整個陣列,其實只需判斷這個i行j列的陣列的arr[i-1][j-1]是否等於要找的數,如果大於要找的數,說明要找的數一定在該數的左下方。如果小於要找的數,說明要找的數一定在該數的下方。2 5 8
3 6 9
實現**如下
#include//(markdown bug)
#include
int find_it(int arr[3][3], int key)
else
if (key > arr[i][j])
else
if (key < arr[i][j])
}return0;}
int main()
,, };
int sz = sizeof(arr) / sizeof(arr[0][0]);
int key = 5;
int t =find_it(arr, key);
if (t == 0)
printf("no");
else
if(t ==1)
printf("yes");
system("pause");
return
0;}
利用楊氏矩陣找乙個數是否存在
楊氏矩陣,是對組合表示理論和舒伯特演算很有用的工具。它提供了一種方便的方式來描述對稱和一般線性群的群表示,並研究它們的性質。有乙個二維陣列.陣列的每行從左到右是遞增的,每列從上到下是遞增的.在這樣的陣列中查詢乙個數字是否存在。時間複雜度小於o n 思路方法 1 了解什麼是楊氏矩陣之後我們就可以將它轉...
C語言 在楊氏矩陣中查詢乙個數字是否存在
題目 有乙個二維陣列 楊氏矩陣 陣列的每行從左到右是遞增的,每列從上到下是遞增的。在這樣的陣列中查詢乙個數字是否存在。時間複雜度小於o n 此題的解決思路為 由於陣列的每行從左到右是遞增的,每列從上到下是遞增的,因此右上角的這個數為該數所在這一行最大的數,為該數所在這一列最小的數,我們以陣列右上角的...
C語言 在楊氏矩陣中查詢乙個數
題目 有乙個二維陣列,陣列的每行從左到右是遞增的,每列從上到下是遞增的。在這樣的陣列中查詢乙個數字是否存在?要求 時間複雜度小於o n 例 陣列 1 2 3 4 5 6 7 8 9 解題思路 首先我們肯定不能用常規的依次遍歷來查詢,這樣做時間複雜度不滿足題目要求 那麼我們應該從何處下手呢?首先我們來...