【发布时间】:2019-05-31 09:50:13
【问题描述】:
我更新了一个多维数组 (Y[i][t][k]) 的值。由于更新需要经过多次迭代,因此这部分代码的运行时间非常重要。我想知道是否有人知道如何以更有效的方式做到这一点。
以下是需要更新的部分。
double [][][] Y=new double [a.length][b.length][c.length];
for(int i=0;i<a.length;i++){
for(int j=0;j<b;j++){
for (int k=0; k<c.length; k++){
if(i==w && j==r && k==u){// w, r and u can have any value.
Y[i][j][k]=g;
}else{
Y[i][j][k]=f;
}
}
}
}
注意:
a is int [][].
b is int.
c is int [][].
q is double.
YIN is double [][][].
F is double.
g=q*YIN[i][j][k]+(1-q)*(Y[i][j][k]-F)
f=q*YIN[i][j][k]+(1-q)*(Y[j][j][k])
【问题讨论】:
-
变量
Y的数据类型是什么,g和f以及a、b和c是什么?请使用更完整的示例程序更新您的帖子。 -
最小的改变是消除最内部循环中的
if语句,并仅遍历整个数组,将元素设置为f,然后在这样做之后,将Y[0][0][10]设置为g应该c.length大于 10。删除 if 语句可能会产生很大的不同,除非您的 java 编译器为您提升它。我会检查两种方式,看看是否有时差。 -
如果“b 是 int”
b.length是什么? -
感谢您的观察。正确的。它是“b”而不是“b.length”。
标签: java arrays eclipse for-loop multidimensional-array