常見演算法之16 二維陣列中查詢元素

2022-03-14 17:22:43 字數 516 閱讀 9423

題目:已知乙個二維陣列a[n][n],其中每行的元素按從小到大的順序排好,每列的元素也按從小到大的順序排好,問給定乙個元素v,是否在陣列中存在?

方案一:暴力方法。逐個遍歷進行比較。時間複雜度為o(n^2)

方案二:對上面的方法進行改進,因為每行是有序的,對每行進行二分查詢,共n行。時間複雜度為o(nlogn)

分析:上述兩個方案對規模較小的陣列表現的效能比較好,並且有很好的可讀性。

但方案一沒有利用有序的條件,而方案二只是利用了行有序的條件,沒有利用列有序的條件。

方案三:從矩陣的右上角開始,即i=0, j=n-1開始遍歷。若是小則向左,若是大則向下。邊界條件是j<0或是i>n-1。時間複雜度為o(n)

**:

while (沒有超過邊界)

演算法 二維陣列中的查詢

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

演算法 二維陣列中的查詢

在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。三種方法 暴力列舉 直接遍歷二維陣列 對每行都進行二分查詢 優雅一點,選定陣列左下角或右上角,這裡選定右上角。...

演算法 二維陣列中的查詢

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