Algorithm 这个算法的大O
这个算法的最大目标是什么?在我看来,O(n^3)Algorithm 这个算法的大O,algorithm,analysis,Algorithm,Analysis,这个算法的最大目标是什么?在我看来,O(n^3)^是指数 A() { int i,j,k,n; for(i=1;i<=n;i++) { for(j=1;j<=i^2;j++) { for(k=1;k<=n/2;k++) { statement ; } } } } A() { int i,j,k
^
是指数
A()
{
int i,j,k,n;
for(i=1;i<=n;i++)
{
for(j=1;j<=i^2;j++)
{
for(k=1;k<=n/2;k++)
{
statement ;
}
}
}
}
A()
{
int i,j,k,n;
对于(i=1;i它似乎是O(n^2*i^2)
。
如果i^2它似乎是O(n^2*i^2)
。
如果i^2C操作符执行异或运算,那么中间的循环在第二次循环中退出。这使得它的运行时保持不变
变量n是未初始化的,所以我们不能真正说出最外面或最里面的循环将做什么
如果n是常量,则整个运行时是常量(1的顺序)
如果传入n,则运行时间为n的平方,因为中间循环的时间是恒定的。C运算符^执行异或,因此中间循环在第二次传入时退出。这使其运行时间恒定
变量n是未初始化的,所以我们不能真正说出最外面或最里面的循环将做什么
如果n是常量,则整个运行时是常量(1的顺序)
如果传入n,则运行时间为n的平方,因为中间的循环具有恒定的时间。否,它是O(n^4)
说明:
第一次,最外层循环运行,第二次循环运行1^2次,最内层循环运行n/2次
总体1^2.n/2
第二次,最外层循环运行,第二次循环运行2^2次,最内层循环运行n/2次
总体2^2.n/2
类似地,直到n^2.n/2
在i
的最后一次迭代中(最外层循环)
求和:(n/2)(1^2+2^2+3^2+…n^2)
=n/2。[n(n+1)(2n+1)/6]
(使用第一个n
数字的平方和属性)
它是O(n^4)
不,它是O(n^4)
说明:
第一次,最外层循环运行,第二次循环运行1^2次,最内层循环运行n/2次
总体1^2.n/2
第二次,最外层循环运行,第二次循环运行2^2次,最内层循环运行n/2次
总体2^2.n/2
类似地,直到n^2.n/2
在i
的最后一次迭代中(最外层循环)
求和:(n/2)(1^2+2^2+3^2+…n^2)
=n/2。[n(n+1)(2n+1)/6]
(使用第一个n
数字的平方和属性)
这是O(n^4)
无法真正计算由于语法错误而无法运行的例程的大O时间。您似乎正在使用^
来引用指数运算符。明确说明这一点会很有帮助,因为^
在C中引用XOR,并且您的示例似乎遵循C语法。无法真正计算routin的大O时间由于语法错误而无法运行的e。您似乎正在使用^
来引用指数运算符。明确说明这一点会很有帮助,因为^
在C中引用XOR,并且您的示例似乎遵循C语法。算法显示i@KyleA是的,您是对的。我没有注意。它是O(n^4)算法显示i@KyleA是的,你是对的。我没有注意。它是O(n^4)。它怎么可能是n^2*n/2
但是,第一个循环呢?这使得它n*n^2*n/2
@Arif No-Arif,意识到我写的是针对i
(最外层循环)的每次迭代的.在上一次迭代中,当i
达到n
时,中间的循环运行n^2
次,最里面的循环运行n/2
次。因此,总的来说,只有上一次迭代才是n^2*n/2
。基本上,我已经将问题分解为i
的每一次迭代,然后将它们相加到了解复杂性。它怎么可能是n^2*n/2
但是,第一个循环呢?这使得它n*n^2*n/2
@Arif没有Arif,要知道我写的是针对I
的每个迭代(最外层循环).在上一次迭代中,当i
达到n
时,中间的循环运行n^2
次,最里面的循环运行n/2
次。因此,总的来说,只有上一次迭代才是n^2*n/2
。基本上,我已经将问题分解为i
的每一次迭代,然后将它们相加到了解复杂性。