【问题标题】:Is linear prefix average method better than quadratic prefix average method?线性前缀平均法是否优于二次前缀平均法?
【发布时间】: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


【解决方案1】:

线性更好,因为它需要更少的执行时间 -O(n) 虽然二次方需要更多时间- O(n^2)

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2016-11-04
      • 2023-03-09
      • 1970-01-01
      • 2017-01-13
      • 2012-03-03
      • 1970-01-01
      • 2015-03-12
      • 2012-08-21
      • 2013-12-22
      相关资源
      最近更新 更多