訪問我們可以用於循環和時間複雜度的矩陣的所有元素是O(n^2)
。 但是,當我們只訪問2D數組中的行時,時間複雜度是多少?當n =行數時是O(n)
? 例如: -只訪問矩陣中的行的時間複雜度
int arr[][] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
for (int i = 0; i < arr.length; i++)
for (int j = 0; j < arr[0].length; j++)
的時間爲上述行復雜度爲O(n^2)
。
但是,如果我們訪問矩陣以下面的方式將時間複雜度仍然是O(n^2)
還是會O(n)
for (int rows[] : arr) - Time complexity is O(n) or O(n^2)
這個循環只會運行'rows'次所以除非你做了一些複雜的操作,它是'O(rows)'。假設'rows = cols',它是'o(n)' –
我想把它作爲[Big O,你如何計算/近似它?]的副本來關閉它(https://stackoverflow.com/questions/3255/)你正試圖在代碼中看到與計算大O的方式相沖突的東西。唯一的例外將是一種使用對象的深層副本的語言在for-each循環中,我不確定哪怕存在(Java絕對不會這樣做)。 – Dukeling