回答
最內圈將明顯運行j
次。假設它包含價值100個單位時間的操作,這將是:
T_inner(j) = j
環路中間將運行i
倍,即
T_middle(i) = Sum {j from 1 to i} T_inner(j)
= Sum {j from 1 to i} j
= i/2 * (1 + i)
最後:
T_outer(n) = Sum {i from 1 to n} T_middle(i)
= Sum {i from 1 to n} (i/2 * (1 + i))
= 1/6 * n * (1 + n) * (2 + n)
= 1/6 n^3 + 1/2 n^2 + 1/3 n
這顯然是O(n^3)
。
注意:這隻會計算最內側塊中的操作。它忽略了執行循環所需的操作。但是如果你包含這些,你會發現時間複雜度是一樣的。
謝謝! @NicoSchertler,它的工作原理:) –
所以通常當算法的複雜性被討論時,他們是否考慮循環所需的操作,還是它總是被忽略? –
維護循環所需的操作將始終與迭代次數(加上初始化操作)成比例。所以,這與向內部塊添加恆定量相似。最終,這並不會改變複雜性。 –
- 1. 這段代碼片段的時間複雜度是多少?
- 2. 這個程序片段的時間複雜度是多少?
- 3. Collection.toArray()的時間複雜度是多少?
- 4. 下面的代碼片段O(n^2)的時間複雜度是多少?
- 5. 減少時間複雜度
- 6. 給定代碼的時間複雜度?
- 7. 分時排序算法的時間複雜度是多少?
- 8. 我的代碼中的時間複雜度是多少
- 9. AngularJS的髒檢查算法的時間複雜度是多少?
- 10. NavigableMap的floorEntry()方法的時間複雜度是多少?
- 11. 這個算法(代碼)的時間複雜度是多少?
- 12. 代碼的時間複雜度是多少?
- 13. 梅森扭紋機的時間複雜度是多少?
- 14. 這個函數的時間複雜度是多少?
- 15. 這個僞代碼的時間複雜度是多少?
- 16. java中StringBuilder.append()的時間複雜度是多少?
- 17. 這個算法的時間複雜度是多少?
- 18. 以下代碼的時間複雜度是多少?
- 19. Python中zip()的時間複雜度是多少?
- 20. clojure中count函數的時間複雜度是多少?
- 21. DataRow索引器的時間複雜度是多少?
- 22. C++中std :: next_permutation()函數的時間複雜度是多少?
- 23. 這個循環的時間複雜度是多少?
- 24. 樹遍歷的時間複雜度是多少?
- 25. Python中collections.Counter()的時間複雜度是多少?
- 26. 密碼散列函數的時間複雜度是多少?
- 27. 搜索JavaScript對象鍵的時間複雜度是多少?
- 28. TreeSet中有序操作的時間複雜度是多少?
- 29. 迭代std :: set/std :: map的時間複雜度是多少?
- 30. Java中LinkedList.getLast()的時間複雜度是多少?
你在這個問題上做了什麼工作?例如,你可以說明'j'的複雜性和確切的公式嗎?有關'k'的確切公式,使複雜性變得很明顯,請參閱[四面體數字](https://en.wikipedia.org/wiki/Tetrahedral_number)。 –
看起來像n^3。雖然我在時間複雜性方面非常糟糕,所以我可能是錯的。而且,這些標籤中的大部分都是不相關的。 – byxor
我已經按照建議移除了標籤。 @BrandonIbbotson –