我試圖將兩個單獨的算法轉換爲Java代碼以便測試它們;第一算法(PrefixAverages1)爲:Java前綴均值/數組幫助
For i = 0 to n-1
Let s = X[0]
For j = 1 to i
Let s = s + X[j]
End For
Let A[i] = s/(i + 1)
End For
輸出:數字的n個元素的數組A使得A [i]爲元素X [0]的平均值,X [1],..., X [i]中。
這是我想出了PrefixAverages1了Java翻譯:
import java.util.Arrays;
public class PrefixAverages1 {
static double array[] = new double[10];
public static void prefixAverages(){
for (int i = 0; i < 10; i++){
double s = array[i];
for (int j = 0; j < 10; j++){
s = s + array[j];
}
array[i] = s/(i + 1);
System.out.println(Arrays.toString(array));
}
}
public static void main(String[] args){
prefixAverages();
}
}
第二種算法(PrefixAverages2)爲:
Let s = X[0]
For i = 0 to n-1
Let s = s + X[i]
Let A[i] = s/(i + 1)
End For
輸出:這樣的數的n元數組A A [i]是元素X [0],X [1],...,X [i]的平均值。
這是我想出了PrefixAverages2了Java翻譯:
import java.util.Arrays;
public class PrefixAverages2 {
static double array[] = new double[10];
public static void prefixAverages(){
double s = 0;
for (int i = 0; i < 10; i++){
s = s + array[i];
array[i] = s/(i + 1);
}
array[0] = 10;
System.out.println(Arrays.toString(array));
}
public static void main(String[] args){
prefixAverages();
}
}
我試圖測試算法,但我不太知道從哪裏開始。我正在嘗試設置一個數組,然後通過手動運行這些算法來應用這些算法,以獲得較小的n值。如何開始將數組添加到數組中?
我也試圖通過計算基本操作來分析兩種算法,並推導出兩種算法的T(n)。我希望能夠計算出每種算法的時間複雜度(Big Oh,O(n)),並發現哪一種算法最有效。
任何幫助,這將不勝感激。
感謝您花時間閱讀並提供幫助。
是否有一個很好的理由,你使用一個數組的輸入和輸出?你應該分開這兩個,至少現在。您的第一個實現肯定不會工作,因爲您覆蓋了稍後需要閱讀的部分數組。 – 2011-02-28 00:57:52
@Mark謝謝您的回覆,Mark。我只是遵循僞代碼算法的說法,但也許我說你做錯了。你能否好好建議一種替代方式呢?謝謝。米克。 – MusTheDataGuy 2011-02-28 01:00:47
看看你的僞代碼。它使用不同的數組來輸出和輸入('A []'vs'X []')。 – 2011-02-28 01:05:15