在楊氏矩陣中判斷乙個數是否存在

2021-08-05 21:02:03 字數 733 閱讀 8126

楊氏矩陣是乙個二位陣列,這個陣列無論橫向縱向都是遞增的。

比如陣列

1 4 7

2 5 8

3 6 9

要想時間複雜度小於o(n)就不能遍歷整個陣列,其實只需判斷這個i行j列的陣列的arr[i-1][j-1]是否等於要找的數,如果大於要找的數,說明要找的數一定在該數的左下方。如果小於要找的數,說明要找的數一定在該數的下方。

實現**如下

#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 解題思路 首先我們肯定不能用常規的依次遍歷來查詢,這樣做時間複雜度不滿足題目要求 那麼我們應該從何處下手呢?首先我們來...