我希望为您提供一些关于算法时间效率的解释,特别是T(n)。下面的算法并不是最有效的,但我认为这是一个很好的例子可以加以学习。我将逐行确认代码中操作总和,希望对您有所帮助。
伪代码:
伪代码:
1. Input: array X of size n
2. Let A = an empty array of size n
3. For i = 0 to n-1
4. Let s = x[0]
5. For j = 0 to i
6. Let sum = sum + x[j]
7. End For
8. Let A[i] = sum / (i+1)
9. End For
10. Output: Array A
我的尝试计算 T(n)
1. 1
2. n
3. n
4. n(2)
5. n(n-1)
6. n(5n)
7. -
8. n(6)
9. -
10. 1
T(n) = 1 + n + n + 2n + n^2 - n + 5n^2 + 6n + 1
= 6n^2 + 9n + 2
因此,T(n) = 6n^2 + 9n + 2 是我得出的结果,从中我推导出了 O(n^2) 的大O表示法。 在计算 T(n) 的基本操作时,我是否有任何错误?
编辑:... 在计算基本操作数时有没有错误?
O(n^2)
。 - Kerrek SB