许多算法中都有如下所示的循环:
for a from 1 to n
for b from 1 to a
for c from 1 to b
for d from 1 to c
for e from 1 to d
...
// Do O(1) work
换句话说,循环嵌套是 k 层深,外层从 1 循环到 n,每个内层从 1 循环到它上面的索引。例如,这显示在迭代数组内所有位置的 k 元组的代码中。
假设 k 是固定的,那么这段代码的运行时间是否总是 Θ(n k )?对于 n = 1 的特殊情况,工作是 Θ(n),因为它只是一个数组上的标准循环,对于 n = 2 的情况,工作是 Θ(n 2 ),因为内部循环完成的工作是(谁)给的
0 + 1 + 2 + ... + n-1 = n(n-1)/2 = Θ(n 2 )
当 k 变大时,这种模式会继续吗?还是只是巧合?