问题描述
很简单的问题,但我有点不确定,刚进入 Big O。如果这只是 3 个循环,那就是 N^3,但是有恒定循环,还有一个循环到 n-1 ,这有点令人困惑。在这种情况下,复杂性如何变化?
算法:
for i=1 to 10
do for j=1 to n-1
do for k=1 to 8
解决方法
在这种情况下,很容易计算迭代次数。
10 * (n - 1) * 8
您必须将其转换为 n 中的简单表达式,同时忽略常量(这是解释您需要做什么的直观方式;有一种数学方式可以表达这一点,但为简洁起见,我将省略它) .
10 * (n - 1) * 8 < 80 * n
所以
10 * (n - 1) * 8 = O(n)
,
常量循环确实改变了复杂性。考虑这一点的方法是在内循环中执行的操作总数。在您的示例中,它是 10 * (n - 1) * 8
操作。简化得到 80 * n - 80
,在大 O 符号中显然只是 O(n)。