我有一个巨大的双[].(例如:例如.double[] array = new double[] {2.0, 3.1, 4.2, 8.9, 10.11, ........})
我想一次得到该数组的所有元素的总和.(不使用循环).
你有任何想法吗?
And*_*s_D 10
不,您无法在一个步骤中计算值列表的总和.即使有一个API方法或某个提供sum函数的库,它也会在内部使用循环.求和算法的复杂性是O(n)(对于单CPU).
一个出路可能是使用并行计算,但这是一个回答你的问题的理论方法.您至少需要与阵列单元一样多的CPU来计算步骤中的总和.(或者一个虚拟CPU,其FP寄存器数量与数组值一样多).
在开始查看Java或其他库的API之前:
public static double sum(double...values) {
double result = 0;
for (double value:values)
result += value;
return result;
}
Run Code Online (Sandbox Code Playgroud)
用法:
double sum = sum(array); // this is in your main code -> no loop (visible)
Run Code Online (Sandbox Code Playgroud)
小智 6
在 Java 8 中:
Arrays.stream(array).sum();
Run Code Online (Sandbox Code Playgroud)
如果你想在多个 CPU 上并行:
Arrays.stream(array).parallel().sum();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24142 次 |
| 最近记录: |