我已經創建了兩個算法來計算給定數組的前綴平均值。我想要推導出這兩種算法的時間複雜性,但我一直在努力。我看過這個YouTube視頻: https://www.youtube.com/watch?v=udwxWq9wZgg&safe=active。我不明白如何計算for循環和嵌套for循環中的操作。算法的時間複雜度
在2:27,我設法計算了PrefixAverages2 for循環中的操作。這是3n + 1。但是,從5:50起我無法理解。
在此先感謝。
public double[] PrefixAverages1(double input[])
{
double A[] = new double[input.length];
double s;
for(int i=0; i <= input.length - 1 ;i++)
{
s = input[0];
for(int j=1; j <= i ;j++)
{
s = s + input[j];
}
A[i] = s/(i+1);
}
return A;
}
public double[] PrefixAverages2(double input[])
{
double A[] = new double[input.length];
double s = 0;
for(int i=0; i <= input.length - 1 ; i++)
{
s = s + input[i];
A[i] = s/(i+1);
}
return A;
}
檢查這些問題,他們可能會幫助你:[第一](http://stackoverflow.com/questions/487258/)/ [第二](http://stackoverflow.com/questions/3255/)。 – Laf
而問題在哪裏?無論如何,第二個是微不足道的,前者只是總結從1到'input.length'的所有整數 - 關閉的公式爲n *(n + 1)/ 2 – Voo
因此計算第一個算法的運算: 1 + n *(n + 1)/ 2 + 2 + 1這就是n *(n + 1)/ 2 + 4 –