三维矩阵遍历Big-O
我对这两种算法的大O的尝试 1算法三矩阵,n //大小为n x n x n的三维矩阵三维矩阵遍历Big-O,big-o,complexity-theory,time-complexity,pseudocode,Big O,Complexity Theory,Time Complexity,Pseudocode,我对这两种算法的大O的尝试 1算法三矩阵,n //大小为n x n x n的三维矩阵 layer ← 0 while (layer < n) row ← 0 while (row < layer) col ← 0 while (col < row) print matrix[layer][row][col] col ← col + 1
layer ← 0
while (layer < n)
row ← 0
while (row < layer)
col ← 0
while (col < row)
print matrix[layer][row][col]
col ← col + 1
done
row ← row + 1
done
layer ← layer * 2
done
在^2logn上,因为两个外部循环都处于打开状态,而最内部的循环似乎是Olog n
2算法Magicn
//整数,n>0
i ← 0
while (i < n)
j ← 0
while (j < power(2,i))
j ← j + 1
done
i ← i + 1
done
外回路为ON,内回路为O2^n?=在2^n?1。算法
首先:该算法永远不会终止,因为层是以零开始的。层只被2乘以,所以它永远不会大于零,特别是不大于n。
要完成这项工作,必须从图层>0开始
让我们从layer=1开始
时间复杂度可以写成Tn=Tn/2+n^2。
您可以这样看:在最后,层最多设置为n。然后内部循环执行n^2步。贝弗,那层只有一半那么大。因此,你必须在外环的最后一圈上做n^2步,并将贝弗·维尔滕圆的所有步数作为Tn/2
你可以得到θ^2
2.算法
您只需计算步骤:
2^0 + 2^1 + 2^2 + ... + 2^(n-1) = sum_(i=0)^(n-1)2^i = 2^n-1
要得到这种简化,只需看看二进制数:步骤之和对应于一个只包含1的二进制数,如1111111。这个数字等于2^n-1
所以时间复杂度是θ2^n
注意:两个大O都没有错,有更好的边界