Algorithm 你将如何着手寻找这个算法的复杂性?
如果有人能告诉我如何找到最坏的情况,以及如何得到alg1的输出a作为n的函数,我将非常感激。谢谢 从最后一个循环中减去t,使其成为Algorithm 你将如何着手寻找这个算法的复杂性?,algorithm,big-o,analysis,Algorithm,Big O,Analysis,如果有人能告诉我如何找到最坏的情况,以及如何得到alg1的输出a作为n的函数,我将非常感激。谢谢 从最后一个循环中减去t,使其成为 function alg1(n) 1 a=0 2 for o=1 to n do 3 for t=1 to o do 4 for k=t to o+t do 5 a=a+1 6 return(a) 现在,对于每个O值,最内部的两个循环将运行O(O^2)时间。答案是 for k=0 to o do 这等于 n(n+1)(2n
function alg1(n)
1 a=0
2 for o=1 to n do
3 for t=1 to o do
4 for k=t to o+t do
5 a=a+1
6 return(a)
现在,对于每个O值,最内部的两个循环将运行O(O^2)时间。答案是
for k=0 to o do
这等于
n(n+1)(2n+1)/6。因此它的数量级为O(n^3)
从最后一个循环中减去t,使其成为
function alg1(n)
1 a=0
2 for o=1 to n do
3 for t=1 to o do
4 for k=t to o+t do
5 a=a+1
6 return(a)
现在,对于每个O值,最内部的两个循环将运行O(O^2)时间。答案是
for k=0 to o do
这等于
n(n+1)(2n+1)/6。因此它的数量级为O(n^3)
我们可以计算此代码执行的增量的确切数目。首先,让我们替换
1^2 + 2^2 + ... n^2
与
更改后,两个内部循环如下所示
for k=1 to o+1 do
这些循环的迭代次数显然是o*(o+1)
。可通过以下方式计算迭代的总次数:
当使用大O表示法时,我们可以排除多项式的系数和低阶项。因此,复杂度是O(n^3)我们可以计算此代码执行的增量的确切数目。首先,让我们替换
1^2 + 2^2 + ... n^2
与
更改后,两个内部循环如下所示
for k=1 to o+1 do
这些循环的迭代次数显然是o*(o+1)
。可通过以下方式计算迭代的总次数:
当使用大O表示法时,我们可以排除多项式的系数和低阶项。因此,复杂性为O(n^3)第三个循环计数器中的减法t可能重复,它不影响结果。然后写下o=1、2等的内部循环数。从第三个循环计数器捕获一个可能重复的减法t,它不会影响结果。然后写下o=1、2等的内部循环数。这句话很有帮助,谢谢!快速提问,为什么最里面的循环简化为k=1到o+1,而不是k=1到o?我想如果你通过减去t来简化这个循环,它会变成k=1到o……是不是因为如果你从内环减去t,它实际上会变成k=0到o,这与k=1到o+1是一样的?这个评论非常有用,谢谢!快速提问,为什么最里面的循环简化为k=1到o+1,而不是k=1到o?我想如果你通过减去t来简化这个循环,它会变成k=1到o……是不是因为如果你从内环减去t,它会变成k=0到o,这与k=1到o+1是一样的?谢谢!也很有帮助。谢谢!也很有帮助。