二維陣列的查詢

2021-09-23 01:55:27 字數 867 閱讀 7896

劍指offer——在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。時間複雜度小於o(n)。

分析:先把要查詢的數字和右上角的作比較,如果要查詢的數字大,由於陣列每行每列都是遞增的,那麼剔除第一行元素。如果要查詢的數字小,則剔除最後一列。一次剔除後將要查詢數字和下乙個右上角元素作比較,此次類推,直至找到所找陣列返回它,或未找到返回0。同理,也可以從左下角開始比較。但不能從左上角或右下角作比較,因為無法剔除。

圖示過程為二維陣列從右上角查詢數字7:

#include#include#includeint findnum1(int arr[4], int row, int col, int num)

while (i < row - 1 && j >= 0)

else if (arr[i][j] < num)

else

} return 0;

}int findnum2(int arr[4], int num)

while (i >= 0 && j <= 3)

else if (num < arr[i][j])

else

} return 0;

}int main()

; int ret = 0;

//ret = findnum1(a,4,4, 80);//右上角開始查詢

ret = findnum2(a, 8);//左下角開始查詢

if (ret)

else

system("pause");

return 0;

}

二維陣列查詢

近日微博上看到乙個題目,二維陣列查詢 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。例如下面的二維陣列就是每行 每列都遞增排序。如果在這個陣列中查詢數字7,則返回true 如果查詢...

二維陣列查詢

天氣變化大,生病折騰了1個禮拜,寫篇部落格壓壓驚。題目源自於清明假期前夕舍友春招的筆試題,後來得知是劍指offer上的一道題,書上應該有解題思路啥的。題目重述 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,...

二維陣列查詢

題目描述 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請 完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。解題思路 按照一般搜尋二維陣列的方法,從左到右,從上到下,比較難根據這個陣列的特點進行快速搜尋。可以從 右到左,從上到下,...