C 在楊氏矩陣中查詢乙個數字

2021-09-27 06:12:23 字數 770 閱讀 4941

什麼是楊氏矩陣?

如果矩陣每一行從左到右是遞增的,每一列從上到下也是遞增的,這樣的矩陣就是楊氏矩陣。如下圖所示:

題目:有乙個二維陣列. 陣列的每行從左到右是遞增的,每列從上到下是遞增的. 在這樣的陣列中查詢乙個數字是否存在。

思緒

由於楊氏矩陣從左到右、從上到下都是逐漸遞增的,假如找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 ...