什麼是楊氏矩陣?
如果矩陣每一行從左到右是遞增的,每一列從上到下也是遞增的,這樣的矩陣就是楊氏矩陣。如下圖所示:
題目:有乙個二維陣列. 陣列的每行從左到右是遞增的,每列從上到下是遞增的. 在這樣的陣列中查詢乙個數字是否存在。
思緒
由於楊氏矩陣從左到右、從上到下都是逐漸遞增的,假如找13這個數,我們先從圖的右上角開始
每次將搜尋值與右上角的值比較,如果大於右上角的值,則直接去除1行,否則,則去掉1列。
最差的情況就是從圖的右上角一直查到左下角。
**如下:
#include
#include
intfindnum
(int a[5]
[5],
int x,
int y,
int key)
else
if(a[row]
[col]
> key)
else
}return0;
}int
main()
,,,,
};if(
findnum
(a,5,5
,13))
else
system
("pause");
return0;
}
C語言 在楊氏矩陣中查詢乙個數字是否存在
題目 有乙個二維陣列 楊氏矩陣 陣列的每行從左到右是遞增的,每列從上到下是遞增的。在這樣的陣列中查詢乙個數字是否存在。時間複雜度小於o n 此題的解決思路為 由於陣列的每行從左到右是遞增的,每列從上到下是遞增的,因此右上角的這個數為該數所在這一行最大的數,為該數所在這一列最小的數,我們以陣列右上角的...
C語言 在楊氏矩陣中查詢乙個數
題目 有乙個二維陣列,陣列的每行從左到右是遞增的,每列從上到下是遞增的。在這樣的陣列中查詢乙個數字是否存在?要求 時間複雜度小於o n 例 陣列 1 2 3 4 5 6 7 8 9 解題思路 首先我們肯定不能用常規的依次遍歷來查詢,這樣做時間複雜度不滿足題目要求 那麼我們應該從何處下手呢?首先我們來...
楊氏矩陣中查詢乙個數,如何去做?
我首先把你們當成面試官,來解決這道題。1.如果不知道楊氏矩陣,先和面試官溝通一下,一定要問清楚。楊氏矩陣 有乙個二維陣列.陣列的每行從左到右是遞增的,每列從上到下是遞增的.在這樣的陣列中查詢乙個數字是否存在。時間複雜度小於o n 這是必須考慮到的 2.不著急寫 先把思路屢清楚,陣列 1 2 3 1 ...