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