2014-06-07 33 views
0

我已經創建了一個方法(基於我在網上找到的僞代碼)來計算數組的前綴平均值,但我不確定我是否滿足要求。線性前綴平均法比二次前綴平均法好嗎?

的要求是:

給定n個編號的陣列的[1 ... n]中計算另一數組b [1 ... n]的還長的 n使得是b [i]是n的平均值爲[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; 
} 

我的問題:

執行這兩項功能滿足要求,如果是的話,哪一個更好?

+2

看起來這兩種方法都滿足要求。線性運行時間比二次方更快,所以第一個是最好的(從運行時間的角度來看)。 – MAV

+0

這個問題似乎無關緊要,因爲它是我們審查或測試代碼的請求。 – Raedwald

回答

0

是的,我認爲這兩個功能都滿足要求。我看不到任何理由你應該在這個問題中選擇線性問題的二次解。