0

配列のプレフィックス平均を計算する方法 (オンラインで見つけた疑似コードに基づく) を作成しましたが、要件を満たしているかどうかはわかりません。

要件は次のとおりです。

n 個の数値の配列 a[1…n] が与えられた場合、長さ n の別の配列 b[1…n] を計算して、b[i] が a[0]…a[i] の平均になるようにします (0 <=)。 i <= 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

0

ええ、両方の機能が要件を満たしていると思います。この問題で線形解ではなく二次解を選択する理由がわかりません。

于 2014-12-21T06:57:46.990 に答える