二維陣列的查詢(根據給定的數查詢相等的元素)

2021-08-10 10:42:25 字數 1313 閱讀 2411

題目:在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。

解決思路: 

因為陣列元素的排序是從左到右,從上到下順序排序的,二維陣列相當於乙個二維表,那麼

*我們可以選取陣列中右上角的數字。如果該數字等於要查詢的數字,查詢過程結束:

* 如果該數字大於要查詢的數字,剔除這個數字所在的列:如果該數字小於要查詢的數字,剔除這個數字所在的行。

* 也就是說如果要查詢的數字不在陣列的右上角,則每-次都在陣列的查詢範圍中剔除一行或者一列,這樣每一步都可以縮小查詢的範圍,直到找到要查詢的數字,或者查詢範圍為空。

public static boolean find(int matrix, int number)   

int rows = matrix.length; // 陣列的行數

int cols = matrix[1].length; // 陣列行的列數

int row = 0; // 起始開始的行號

int col = cols - 1; // 起始開始的列號

// 要查詢的位置確保在陣列之內

while (row >= 0 && row < rows && col >= 0 && col < cols) else if (matrix[row][col] > number) else

} return false;

} public static void main(string args) ,

, ,

};

system.out.println(find(matrix, 7)); // 要查詢的數在陣列中

system.out.println(find(matrix, 5)); // 要查詢的數不在陣列中

system.out.println(find(matrix, 1)); // 要查詢的數是陣列中最小的數字

system.out.println(find(matrix, 15)); // 要查詢的數是陣列中最大的數字

system.out.println(find(matrix, 0)); // 要查詢的數比陣列中最小的數字還小

system.out.println(find(matrix, 16)); // 要查詢的數比陣列中最大的數字還大

system.out.println(find(null, 16)); // 健壯性測試,輸入空指標

} }

二維陣列的查詢

題目描述 在乙個二維陣列中,每一行都按照從左到右的遞增順序排序,每一列都按照從上到下的順序排序,請完成乙個函式,輸入這樣乙個二位陣列和乙個整數,判斷陣列中是否有該整數。思路 充分考慮到該陣列行與列遞增的特性。首先選擇陣列中右上角的數字,如果該數字等於要查的數字,查詢過程結束 如果該數字大於要查詢的數...

二維陣列的查詢

在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。乙個從左到右,從上到下遞增的二維陣列,我們可以從陣列的左下角或者右上角開始遍歷,這樣當我們將target與遍歷的元素做比較後 以左下角...

二維陣列的查詢

題目描述 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。思路首先我們選擇從左下角開始搜尋,為什麼不從左上角開始搜尋,左上角向右和向下都是遞增,那麼對於乙個點,對於向右和向下會產生乙...