0

我创建了一种方法(基于我在网上找到的伪代码)来计算数组的前缀平均值,但我不确定我是否满足要求。

要求是:

给定一个包含 n 个数字的数组 a[1…n],计算另一个长度也为 n 的数组 b[1…n],使得 b[i] 是 a[0]…a[i] 的平均值,对于 0 <=我 <= n。

我环顾四周,发现了前缀平均方法的线性和二次版本的伪代码,并创建了我自己的每个实现。

这是线性版本:

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;
}

我的问题:

这两个功能是否都满足要求,如果满足,哪个更好?

4

2 回答 2

1

Linear is better as it takes less execution time -O(n) While Quadratic will take more time- O(n^2)

于 2021-06-15T17:48:55.307 回答
0

是的,我认为这两个功能都满足要求。在这个问题中,我看不出你应该选择二次解而不是线性解的任何理由。

于 2014-12-21T06:57:46.990 回答