【发布时间】:2015-09-09 22:31:34
【问题描述】:
我试图用大 O 表示法计算一个简单算法的时间复杂度,但其中的一部分让我大吃一惊。这是该算法的简化版本:
int a=n
while(a>0)
{
//for loop with time complexity n^3
a = a/8
}
在这种情况下,它是整数除法,所以 while 循环将在 a 的值低于 8 后终止。我不知道如何用 n 来表达它。我还想知道如何处理这样的未来计算,其中循环的数量不太容易定义。
【问题讨论】:
-
您需要显示整个代码才能完成这样的计算。
//for loop with time complexity n^3真的是n^3还是真的a^3?有一个很大的不同。一般来说,您需要做的是计算while的每次迭代花费了多少时间,以及发生了多少次迭代。 -
你看到循环执行 O(log(n)) 次了吗?
标签: algorithm big-o time-complexity bit-shift logarithm