在while循环内嵌套for循环的时间复杂度

时间:2018-11-30 07:46:18

标签: time-complexity

如果while循环中有这样的嵌套for循环:

while(condition)
   for(i=0; i<size; i++)

每次执行for循环时,for循环中的大小都会增加,从1,2,...,n-1开始 而while循环运行n-1次。

那意味着时间复杂度是O(n ^ 3)吗?

1 个答案:

答案 0 :(得分:1)

如果每次 for循环都被执行,您的意思是每次while(condition)触发for循环的新运行时,时间复杂度为{{ 0}}。

也就是说,如果您在内部for循环内增加一个计数器,则它将递增1 = n选择2 次。但是由于常量因子和低阶项用大O表示法省略了,所以我们可以只写n

为说明起见,请考虑以下Python 2.7实现(我将外部while循环+ size增量转换为for循环):

n = 10
counter = 0

for size in range(1, n):
    for i in range(0, size):
        counter += 1
        print i,
    print
print

print "counter =", counter
print "n choose 2 =", (n * (n - 1)) / 2

输出:

0
0 1
0 1 2
0 1 2 3
0 1 2 3 4
0 1 2 3 4 5
0 1 2 3 4 5 6
0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7 8

counter = 45
n choose 2 = 45

尝试使用不同的 n 值运行它,以了解该公式成立。