在乙個m行n列二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。
例如下面的二維陣列就是每行、每列都遞增排序。如果在這個陣列中查詢數字6,則返回true;如果查詢數字5,由於陣列不含有該數字,則返回false。
本young問題解法有二(如查詢數字6):
1、分治法,分為四個矩形,配以二分查詢,如果要找的數是6介於對角線上相鄰的兩個數4、10,可以排除掉左上和右下的兩個矩形,而遞迴在
左下和右上的兩個矩形繼續找,如下圖所示:
2、定位法,時間複雜度o(m+n)。首先直接定位到最右上角的元素,再配以二分查詢,比要找的數(6)大就往左走,比要找數(6)的小就往下走,直到找到要找的數字(6)為止,如下圖所示:
上述方法二的關鍵**+
程式執行如下圖所示:
演算法學習 楊氏矩陣
楊氏矩陣中,每行元素是遞增的,每列元素也是遞增的。思想 從矩陣的右上角 或者左下角 開始查詢num,如果a i j num,則比較a i 1 j 與num之間的關係。當a i j 等於num,或者i j至少有乙個超出矩陣範圍,則結束查詢。查詢流程圖如下所示 演算法複雜度 o n m 思想 類似於堆排...
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...
程式設計題 楊氏矩陣查詢演算法
原題出處 牛客網 雖然實際是選擇題,但我覺得歸類為程式設計題會更符合my feel。給定乙個m行n列的整數矩陣 如圖 每行從左到右和每列從上到下都是有序的。判斷乙個整數k是否在矩陣中出現的最優演算法,在最壞情況下的時間複雜度是o m n 由於行列都是有序的,因此可以通過判斷行列的極值降低時間複雜度。...