面試題4 二維陣列中的查詢

2021-10-02 09:33:22 字數 769 閱讀 1523

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

分3種情況來分析查詢過程:

當前位置等於要查詢的數字,查詢結束;

當前位置小於要查詢的數字,根據資料排序規則,要查詢的數字位於當前位置的右邊或下邊;

當前位置大於要查詢的數字,根據資料排序規則,要查詢的數字位於當前位置的左邊或上邊。

首先選取陣列中右上角的數字。如果該數字等於要查詢的數字,則查詢過程結束;如果該數字大於要查詢的數字,則剔除這個數字所在的列;如果該數字小於要查詢的數字,則剔除這個數字所在的行。也就是說,如果要查詢的數字不在陣列右上角,則每一次都在陣列的查詢範圍中剔除一行或者一列,這樣每一步都可以縮小查詢範圍,直到找到要查詢的數字,或者查詢範圍為空。

既然可以選擇右上角的數字,同理,也可以選擇左下角的資料,只是後面剔除行列的時候稍微有些變化。但是不能選擇左上角或者右下角,因為資料排序規則,不能剔除某一行或某一列,也就無法縮小查詢範圍。

package com.wsy;

public class main , , , };

find(a, 4, 4, 7);

}public static boolean find(int a, int rows, int columns, int number) else if (a[row][column] > number) else }}

return flag;

}}

面試題4 二維陣列中的查詢

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

面試題4 二維陣列中的查詢

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

面試題4 二維陣列中的查詢

題目 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下的遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。c 實現 includeusing namespace std bool find int numbers,int rows,...