0
假設項目具有足夠的未使用空間而不需要重新調整大小,以下兩種算法的最壞情況時間複雜度是多少?我最初的猜測是A會運行得更慢,因爲它必須將每個元素都移到索引[0]上添加新元素。我認爲在最壞的情況下B是O(N^2),但我不確定。Complexity and Big-O
A.
for (int i = 0; i < N; i++)
items.add(0, new Integer(i));
和B.
for (int i = 0; i < N; i++)
items.add(new Integer(i));
items是一個ArrayList。但是爲什麼不是A O(N^2或N^3),因爲它必須將n(n-1)/ 2 => n^2個項目移位n次。 –
user1874239
2013-02-13 05:47:32
A確實是O(N或N^2),因爲每個插入需要O(1)或O(N)。我應該清楚地說明這一點。 n^2項目是什麼意思?根據循環A,您只能進行N次插入,因此您有最多N個項目。 – 2013-02-13 06:25:59
,但在A循環結束時,一旦你完全通過它,你將不得不移動n(n-1)/ 2個數字,因爲每次你將新數字加到列表的前面(使用arrayList)而不是在B中,你將它添加到結尾 – user1874239 2013-02-13 15:00:41