二維陣列中的查詢,楊氏矩陣
題目:在乙個二維陣列中,每行都按照從左到右的遞增的順序排序。每列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個陣列和乙個數,判斷陣列中是否包含這個數。
例如:二維陣列
1 2 3
4 5 6
7 8 9
查詢數字7.
注意:此題不是簡單的便利整個陣列進行查詢,此法效率較低,根據楊氏矩陣的特點(每行都按照從左到右的遞增的順序排序。每列都按照從上到下遞增的順序排序)進行不斷縮小查詢範圍的形式進行查詢。**如下:
#include#include#define line 3
#define list 3
void bulid(int str[line][list],int find)
return 0;
}return -1;
}int main()
; int i,j,find,num,var;
printf("請輸入二維陣列第乙個值和需要查詢的數字》\n");
scanf("%d%d",&num,&find);
str[0][0]=num;
bulid(str,find);
var=search(str,find);
if(var==1)
printf("exist %d\n",find);
else
printf("not exist %d\n",find);
system("pause");
return 0;
}
本文出自 「scen」 部落格,請務必保留此出處 二維矩陣(楊氏矩陣)查詢
定義 從左到右,從上到下,依次增大 查詢某元素 假設矩陣為 1 2 8 9 2 4 9 12 4 7 10 13 6 8 11 15 在裡面查詢7,如果我們從1開始,則1的右半部分,也就是剩下矩陣的全體,都可能會存在7,這是顯然不行的,我們要確定乙個確切的查詢規則,它沿著特定路線走,最後找到 我們看...
楊氏陣列(矩陣)查詢
題目描述 有乙個二維陣列 矩陣 每一行元素從左往右依次增大,每一列元素從上往下依次增大,即表示為table i j 由於矩陣按行序和列序分別都是增加的,那麼,我們只需要每次和當前行或者列中最大的元素進行比較即可,若是要搜尋的數大於當前行列中最大的元素,那麼,直接跳到下一行列在此迴圈比較,逐步縮小查詢...
二維陣列中查詢
1.問題描述 在乙個二維陣列中,每一行按照從左到右的遞增順序排序,每一列按照從上到下的遞增的順序排序,請完成這樣乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列是否含有該整數。來自 劍指offer 2.分析 首先選取陣列中右上角的數字。如果該數字等於要查詢的數字,查詢過程結束 如果該數字大於要查...