【发布时间】:2014-06-07 00:49:02
【问题描述】:
我创建了一个方法(基于我在网上找到的伪代码)来计算数组的前缀平均值,但我不确定我是否满足要求。
要求是:
给定一个包含 n 个数字的数组 a[1…n],同时计算另一个数组 b[1…n] 长度为 n 使得 b[i] 是 a[0]…a[i] 的平均值,对于 0
我环顾四周,发现了前缀平均方法的线性和二次版本的伪代码,并创建了我自己的每个实现。
这是线性版本:
public static double[] prefixAverages1 (double[] n) {
double b[] = new double[n.length];
double s = 0;
for (int i = 0; i < n.length; i++) {
s += n[i];
b[i] = s/(i+1);
}
return b;
}
这是二次版:
public static double[] prefixAverages2 (double[] n) {
double b[] = new double[n.length];
for (int i = 0; i < n.length; i++) {
double t = 0;
for (int j = 0; j <= i; j++) {
t += n[j];
}
b[i] = t/(i+1);
}
return b;
}
我的问题:
这两个功能是否都满足要求,如果满足,哪个更好?
【问题讨论】:
-
看起来这两种方法都满足要求。线性的运行时间比二次的快,所以第一个是最好的(从运行时间的角度来看)。
-
这个问题似乎跑题了,因为它要求我们审查或测试代码。
标签: java array-algorithms