什麼是楊氏矩陣
楊氏矩陣是從左到右,從上到下數字遞增的乙個矩陣
例如:1 2 3
4 5 6
7 8 9
但不是說,第一行比第二行的數字要大,第三行數字要比第二行數字要大,例如下面的情況
例如:1 2 3
2 4 5
4 5 6
思路
在楊氏矩陣中,查詢某個數字,我們一般可以對比查詢,那開始對比的數字怎麼尋找呢?
首先可以找右上角或者左下角這兩種情況,具體舉例用右上角。
為什麼找的是這兩個數字?
原因:1 2 3
2 4 5
4 5 6
看這個矩陣,右上角的3是一行中最大的,一列中最小的,和它進行對比。
要找的數字比它大,向下繼續尋找(y不變,x- -)
要找的數字比它小,向左繼續尋找(x不變,y- -)
為什麼不是左上角,右下角的數字呢?
因為左上角的數字比要找的任何數字都要小,除了它本身以外,再去找乙個其他的數字與左上角的數字對比,沒有什麼意義,反而會浪費電腦操作的時間,右下角同理。
實現函式
int
findnum
(int arr[3]
[3],
int k,
int row,
int col)
else
if(arr[x]
[y]< k)
//右上角的數字比要找的數字小,繼續向下找
else
}//迴圈完之後找不到,直接返回0
return0;
}
完整流程
#include
intfindnum
(int arr[3]
[3],
int k,
int row,
int col)
else
if(arr[x]
[y]< k)
//右上角的數字比要找的數字小,繼續向下找
else
}//迴圈完之後找不到,直接返回0
return0;
}int
main()
,,};
int k =7;
int ret =
findnum
(arr, k,3,
3);if
(ret ==1)
else
return0;
}
c語言楊氏矩陣演算法
楊氏矩陣 有乙個二維陣列.陣列的每行從左到右是遞增的,每列從上到下是遞增的.在這樣的陣列中查詢乙個數字是否存在。時間複雜度小於o n 陣列 1 2 3 2 3 4 3 4 5 1 3 4 2 4 5 4 5 6 1 2 3 4 5 6 7 8 9 define crt secure no warni...
C (楊氏矩陣)
1.調整陣列使奇數全部都位於偶數前面。題目 輸入乙個整數陣列,實現乙個函式,來調整該陣列中數字的順序使得陣列中所有的奇數字於陣列的前半部分,所有偶數字於陣列的後半部分。第一種方法 特別常見而且很普通的演算法,用乙個陣列儲存,遍歷。結果分類。include include includeusing n...
楊氏矩陣C 實現
何為楊氏矩陣?這個網上的介紹很多,下面給出楊氏矩陣搜尋演算法 include using namespace std 楊氏矩陣查詢演算法 bool yang search int arr 4 int n,int k 從左下角元素查起 int col 0 int row n 1 while row 0...