【问题标题】:simplifying big (O) for three nested for loops [closed]为三个嵌套的 for 循环简化大(O)[关闭]
【发布时间】:2022-01-23 04:40:14
【问题描述】:
我有一个三个嵌套的 for 循环,它们的 big(O) 是:
O (log (n) ) 第一个
O ( n^2) 第二个
第三个是O ( 2× 2^log (n))。
我想知道如何总结和简化这个问题。
知道log 用于base 2
我的想法是选择更大的大 O,即n^2,对吗?
如果不是如何解决这个问题?
【问题讨论】:
标签:
algorithm
time-complexity
big-o
nested-loops
【解决方案1】:
嵌套循环相乘,所以你有log n * n^2 * 2^log(n)。您可以删除常数 2 乘法。由于2^log(n) 只是n,这将减少为log n * n^2 * n = log n * n^3。
所以它变成了O(log n * n^3)。
嵌套循环成倍增加的原因是您正在为外循环的每次迭代执行整个内循环。如果外部循环是一个常数(或任何与此相关的循环,无论它们的位置如何),您都可以将它放在 Big O 中,但由于您不能将 log n 放在 O(n * log n) 中,所以您不能删除与输入相关的变量的任何乘法。