Algorithm 最坏的情况是什么时间复杂度? for(int i=1;i

Algorithm 最坏的情况是什么时间复杂度? for(int i=1;i,algorithm,Algorithm,有人能给我解释一下吗? 我认为它是log(n)*log(I)。对吗? for(int i = 1 ; i < n ; i* = 2) for(int j = 1 ; j < i ; j* = 2) (i=1;i

有人能给我解释一下吗? 我认为它是log(n)*log(I)。对吗?

for(int i = 1 ; i < n ; i* = 2)
for(int j = 1 ; j < i ; j* = 2)
(i=1;i 对于(j=1;j “stuff”将运行1+2+3+…+日志(n)-1次。因为整数1到N的和是N*(N+1)/2,所以最坏情况下的运行时间是O(log(N)^2)。

for(int i = 1 ; i < n ; i* = 2)
for(int j = 1 ; j < i ; j* = 2)
(i=1;i 对于(j=1;j
“stuff”将运行1+2+3+…+日志(n)-1次。由于整数1到N的和是N*(N+1)/2,最坏的情况是运行时间是O(log(N)^2)。

我认为nlog(I);正如我们看到的,它从1运行到n次,因此它将是n,对于i,它取决于n,不确定,但可能会记录(i);所以它将是n*log(i);让我知道你说什么。@Mudasar虽然从1运行到n,但总是增加2倍,所以我认为它不可能是n*log(i)。我认为最复杂的是log(n)*log(n)。你需要从输出中删除
i
。将
i
关联到
n
并使用该关系。“i”不是一个参数,它是一个循环控制变量;正如我们看到的,它从1运行到n次,因此它将是n,对于i,它取决于n,不确定,但可能会记录(i);所以它将是n*log(i);让我知道你说什么。@Mudasar虽然从1运行到n,但总是增加2倍,所以我认为它不可能是n*log(i)。我认为最复杂的是log(n)*log(n)。你需要从输出中删除
i
。将
i
关联到
n
并使用该关系。“i”不是一个参数,它是一个循环控制变量。我同意该推理。我还根据经验检验了它,它成立。我同意这个推理。我还根据经验进行了检查,结果是正确的。