求和的复杂度计算

时间:2016-01-31 21:21:34

标签: complexity-theory

我无法理解以下代码的复杂性计算:

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的增加而增加。

编辑:循环编辑

2 个答案:

答案 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