楊氏陣列查詢

2021-06-28 11:05:08 字數 897 閱讀 7939

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 楊氏矩陣查詢 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個...