【发布时间】:2015-06-23 03:59:12
【问题描述】:
我有两个问题想问。
第一个是 hf = {1, 4, 9, ........, n-1, n} 的数组。我想对数组中的每个元素进行平方,例如 {1^2, 4^2, 9^2, ........, (n-1)^2, n^2}。
有两个数组。一个是 hf = {1, 4, 9, .........., n-1, n},另一个是随机 = {2, 3, 4, .........., k- 1, k}。我想将两个数组中的每个组件相乘。 {1*2, 4*3, 9*4, ......., (n-1)(k-1), nk}。
我使用的实际代码如下:
int np = 20000;
for (int i = 0; i < np; i++)
{
random[i] = randomNG.GetNormal();
for (int j = 0; j < np; j++)
{
sigma[j] = Math.Pow(hf[j], 2);
hf[j] = hf[j] * random[i];
sigma_super[j] = sigma_super[j] + sigma[j];
hf_super[j] = hf_super[j] + hf[j];
}
}
为了完成上述情况,我使用了“for”语句。问题是处理需要很长时间,因为另一个 for 语句中有 for 语句(20000x20000 次迭代)。
当我测量经过的时间时,大约是 14 秒。有没有其他方法可以在更短的时间内做同样的事情(也许使用开源库中的矩阵类)?我真的很想优化这个过程。
【问题讨论】:
-
我们所说的数组有多大?
-
每个数组中大约有 20000 个元素。以上是一个例子。如果我在每个步骤中都应用精确的方程式,那将需要很多时间!感谢阅读,
-
好吧,如果你事先知道数组的大小,你可以在
n / 2迭代中完成 -
情况2中的两个数组长度是否相同?
-
我可以假设第一个数组是乡绅数字数组吗?即 {1, 4, 9 ..... (n-1)^2, n^2} ?
标签: c# arrays algorithm optimization matrix