演算法 二維陣列中的查詢

2021-10-08 20:27:22 字數 1106 閱讀 5728

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

三種方法

暴力列舉:直接遍歷二維陣列

對每行都進行二分查詢

優雅一點,選定陣列左下角或右上角,這裡選定右上角。從右上角開始遍歷,如果相等就找到了,不等則繼續判斷此時的數比要查詢的數大還是小:如果 當前數比要尋找的數 大,則列數減小(向左移); 如果 當前數比要尋找的數 小,則行數增大(向下移動)。

方法3:選定右上角開始遍歷

/**

* * @description:

* 題目描述

* 在乙個二維陣列中(每個一維陣列的長度相同),每一行都按照從左到右遞增的順序排序,

* 每一列都按照從上到下遞增的順序排序。請完成乙個函式,

* 輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。

*/public class search

//從右上角開始查詢

for(int row = 0,col = array[0].length-1 ; row = 0 ; ) else if (array[row][col] > target ) else if (array[row][col] < target)

}return false;

}public static void main(string args) ,,,};

boolean find = new search().find(6, ints);

system.out.println(find);

}}

方法2:對每行都進行二分查詢

public static void main(string args) ,,,};

boolean find = new search().search2(14, ints);

system.out.println(find);

}boolean search2(int target, int array)

}return false;

}

演算法 二維陣列中的查詢

在乙個二維陣列中 每一行都按照從左到右遞增的順序排序 每一列都按照從上到下遞增的順序排序 請完成乙個函式,輸入這樣的乙個二維陣列 和乙個整數,判斷陣列中是否含有該整數 首先選取陣列中右上角的數字 如果該數等於要查詢的數字 則查詢結果結束 如果該陣列大於查詢的數字,則剔除這個陣列所在的列 如果該數字小...

演算法 二維陣列中的查詢

在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。首先選取陣列中右上角的數字。如果該數字等於要查詢的數字,查詢過程結束 如果該數字大於要查詢的陣列,剔除這個數字...

刷演算法 二維陣列中的查詢

在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。例如二維陣列arr 1,2,3,4 5,6,7,8 9,10,11,12 target 7,如果按照常規的查詢...