簡體   English   中英

時間復雜度為 O(log N^3/M) 的算法

[英]Algorithm with O(log N^3/M) time complexity

我正在嘗試編寫一個時間復雜度為 O(log N^3/M) 的算法。 但是,我不確定 log N/M 部分。 如果有人能確認我的算法是否正確,我將不勝感激。

for (int i = 1; i < N; i = i*2) // log N
  for (int i = 1; i < N; i = i*2) // log N
    *for (int i = 1; i < N; i += M+i*2) // log N/M

* 如果for (int i = 1; i < N; i += M)時間復雜度為 O(N/M),並且 O(log N) 要求i乘以一個常數,那么結論是 O(log N/M) 如果我們將常數添加到i並同時乘以另一個常數,則可以實現。

O(N/log N) 時間復雜度的算法是什么?

我認為: for (int i = 1; i < N; i += M+i*2)不是 O(log(N/M)) 因為可以說循環將運行 k 次,然后我們有: k*M + 2^k >=N -> 這不會導致 k=O(log(N/M))。

相反,你可以寫:

for (int i = 1; i < N/M; i =i*2)

這顯然是 O(log(N/M))。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM