我无法理解以下代码的复杂性计算:
for (int i=0;i<=n;i++) //executes n times
for(int j=0;j<=m;j=j+i) //execute ? times
//do something
时间复杂度= O(n *?)
请帮忙。
编辑:由于细节不足而造成的不便表示抱歉。在执行过程中,我并不是要求内部循环的调用时间如何执行。我的问题是,在这方面正在分析大O的复杂性。通过执行n次,我的意思是运行时间。
这里n是比i或j大的数字方式。 因此,n> 0。
我很难理解内部循环的大O符号分析的概念,执行时,比k小于n,并且随着i的增加而增加。
编辑:循环编辑
答案 0 :(得分:2)
代码不会终止。对于n = 0时的第一次迭代,内部循环将停留在无限循环中:(j = 0; j <= 0; j = j + 0)其中j <= 0始终为真,而j永远不变(正在0永远)。
答案 1 :(得分:0)
2.循环执行n - i
次。
示例n = 6
首次运行1.循环:
i=1
j=1+1
j=2+1
j=3+1
j=4+1
j=5+1
j<=n
第二轮1.循环:
i=2
j=1+2
j=2+2
j=3+2
j=4+2
j<=n
1.循环的第三次运行:
i=3
j=1+3
j=2+3
j=3+3
j<=n
第四轮1.循环:
i=4
j=1+4
j=2+4
j<=n
第五轮1.循环:
i=5
j=1+5
j<=n