用循环表示的对数复杂度?

时间:2011-11-10 16:43:13

标签: algorithm complexity-theory big-o

据我所知,线性复杂度可以表示为简单循环,二次复杂度可以表示为嵌套循环。如何表示立方和对数复杂度?

谢谢!

5 个答案:

答案 0 :(得分:9)

简单循环可以具有对数复杂度,例如

for (i = 1; i <= N; i *= 2)
    ...

正如其他人已经回答的那样,三重嵌套循环将具有立方复杂性。

答案 1 :(得分:5)

由于cubic是O(n ^ 3),它将是三个嵌套循环。

对数不是那么简单,通常需要递归关系。 例如,MergeSort是O(n * log(n)),因为它形成了高度log(n)的递归树,并且每个级别都需要O(n)合并操作。

答案 2 :(得分:1)

  • Cubic - 三个嵌套循环
  • 对数 - 在每个循环周期中您将按部分分割输入数据(或以某种方式使其变小)以及在下一个循环过程中缩短数据集的想法,因此在输入数据集增长时基本上复杂性不会显着增长。例如,请查看BinarySearch algorithm或任何其他Divide and conquer算法。

答案 3 :(得分:1)

立方复杂性 - 三个嵌套循环:

foreach
   foreach
      foreach
      // actions
      end
   end
end

对数复杂度示例 - binary search

答案 4 :(得分:0)

O(n ^ 3)可以用3个嵌套循环表示。

O(log n)由循环表示,每次迭代时,需要处理的数据量减少一半。