在乙個二維陣列中(每個一維陣列的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。
三種方法
暴力列舉:直接遍歷二維陣列
對每行都進行二分查詢
優雅一點,選定陣列左下角或右上角,這裡選定右上角。從右上角開始遍歷,如果相等就找到了,不等則繼續判斷此時的數比要查詢的數大還是小:如果 當前數比要尋找的數 大,則列數減小(向左移); 如果 當前數比要尋找的數 小,則行數增大(向下移動)。
方法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,如果按照常規的查詢...