我正在寻找一些澄清算法的时间效率,特别是T(n).下面的算法并不尽可能高效,尽管这是我相信的一个很好的例子.我希望逐行确认代码中的操作总和: 伪代码 1. Input: array X of size n 2. Let
伪代码
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)的Big-O.
如果我在计算中做了什么错误……
编辑:…计算原始操作以导出T(n)?
您的结果O(n ^ 2)是正确的,由两个嵌套循环给出.我更喜欢推导0 + 1 + 2 + + (n-1) = (n-1)n/2 = O(n^2)
从观察嵌套循环开始.