如果while循环中有这样的嵌套for循环:
while(condition)
for(i=0; i<size; i++)
每次执行for循环时,for循环中的大小都会增加,从1,2,...,n-1开始 而while循环运行n-1次。
那意味着时间复杂度是O(n ^ 3)吗?
答案 0 :(得分:1)
如果每次while(condition)
触发for
循环的新运行时,时间复杂度为{{ 0}}。
也就是说,如果您在内部for循环内增加一个计数器,则它将递增 = n选择2 次。但是由于常量因子和低阶项用大O表示法省略了,所以我们可以只写。
为说明起见,请考虑以下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 值运行它,以了解该公式成立。