1. 簡述
楊氏矩陣中,每行元素是遞增的,每列元素也是遞增的。即a[i][j]2. 原理
從矩陣的左下角或者矩陣的右上角處開始遞迴執行,以左下角為例,value為要查詢的值,(i,j)為當前矩陣中的位置,初始為(m-1, 0)。
如果超過了矩陣範圍則說明不存在這樣的元素,返回-1,-1。
否則的話,如果當前位置的值大於value,說明要移動位置,使得數值減小,即遞迴使得i=i-1;如果當前位置的值小於value,說明要移動位置,使得數值增大,即遞迴使得j=j+1;如果剛好等於value,返回當前的位置i,j即可。
**如下:
#include"stdio.h"
#include //楊氏矩陣查詢
#define m 4
#define n 3
void findvalue(int *a,int x,int y,int & x_value,int & y_value,int value)//y++ x--
if(*(a+x*4+y)value)
findvalue(a,x-1,y,x_value,y_value,value);
else if(*(a+x*4+y)==value) }
int main()
; int value=0;
int x,y;
x=-1;
y=-1;
findvalue(&a[0][0],2,0,x,y,value);
if(x==-1)
printf("沒有找到%d\n",value);
else
printf("%d的位置為 %d,%d",value,x,y);
getchar();
return 0;
}
楊氏陣列(矩陣)查詢
題目描述 有乙個二維陣列 矩陣 每一行元素從左往右依次增大,每一列元素從上往下依次增大,即表示為table i j 由於矩陣按行序和列序分別都是增加的,那麼,我們只需要每次和當前行或者列中最大的元素進行比較即可,若是要搜尋的數大於當前行列中最大的元素,那麼,直接跳到下一行列在此迴圈比較,逐步縮小查詢...
楊氏矩陣查詢
題目為 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。例如下面的二維陣列就是每行 每列都遞增排序,如果在這個陣列中查詢數字6,則返回true 如果查詢數字10,由於陣列不含有該數字...
楊氏矩陣查詢
方案一 時間複雜度o m n 原理 從右上角開始 左下角相同 如果arr i j t,就向左查詢,如果arr i j 2013.7.23 0423 function 楊氏矩陣查詢 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個...