Java 多重for循环的时间复杂度

Java 多重for循环的时间复杂度,java,for-loop,time-complexity,Java,For Loop,Time Complexity,我在计算一种方法的时间复杂度,我有: for(int i = 0; i < P; i++){ for(int j = P-1; j >= 0; j--){ for(int k = 0; k < D; k++){} for(int z = 0; z < D; z++){} }} for(int i=0;i=0;j--){ 对于(int k=0;k

我在计算一种方法的时间复杂度,我有:

for(int i = 0; i < P; i++){
  for(int j = P-1; j >= 0; j--){
          for(int k = 0; k < D; k++){}
          for(int z = 0; z < D; z++){}
  }}
for(int i=0;i=0;j--){
对于(int k=0;k
D总是小于或等于p,但我怀疑的是最后四分之二。我的时间复杂度是O(2P^3),但我读过2可以像O(P^3)一样删除。这些是否正确?

O(2P^3)
等同于
O(p^3)

具体来说,O表示法描述了最坏情况下的时间/空间使用量是如何根据输入的大小增加的(在这种情况下,它是按三次方增加的,而不是按线性或二次方增加的)。因此,我们对这种复杂性的类别感兴趣-随着
P
变得任意大,
2P^3
P^3
越来越难以区分,因此我们可以忽略系数
2


同时,如果我们将伸缩性与
O(p^2)
进行比较,则资源使用量将大大减少,因为
p
变得任意大。即使我们将
P^3
的复杂度与
(1000P^2)
的复杂度进行比较,也有一点
P
变得如此之大以至于1000的因子变得微不足道,所以我们可以忽略它。

你的意思是第二个循环中的
j++
吗?哦,不,这是个错误,它的j--。我已经改正了!你可以在循环之外声明i、j、k和z,这可能会提高速度。@paladin,这不会有任何影响。我很确定减少内存分配和垃圾收集时间也会提高运行速度。谢谢!我还想知道是应该将时间复杂度计算为O(DP^2),还是O(P^3)更正确,因为D可以等于P@Marizard如果
D
独立于
P
,则
O(DP^2)
是正确的。如果
D
是从
P
派生出来的,那么
O(P^3)
可能会更正确,但是
O(DP^2)
不会不正确,必要的是非常感谢!