用Big O解决复发问题

时间:2011-06-05 18:33:53

标签: recursion

我有这种情况:

T(n)= T(n-1)+ O(n log n)

然后我猜解决方案是T(n)= O(n log n) 我使用替换方法。

T(n)< = c *(n-1)* log(n-1)+ O(n log n)

T(n)< = c * n * log(n)+ O(n log n)= O(n log n)

这是对的吗?

1 个答案:

答案 0 :(得分:0)

我认为这是不正确的。我认为错误是在最后一步。

我认为正确的答案是:T(n)= O(n ^ 2 log n)。

原因如下:

T(n)= T(n-1)+ O(n log n)

T(n)= T(n-2)+ O((n-1)log(n-1))+ O(n log n)

T(n)= T(n-3)+ O((n-2)log(n-2))+ O((n-1)log(n-1))+ O(n log n )

T(n)> = O(n log n)+ O((n-1)log(n-1))+ O((n-2)log(n-2))+ ...... + O((n / 2)log(n / 2))

T(n)> =(n / 2)* O((n / 2)log(n / 2))

T(n)> = O(n ^ 2 log n)

另一方面:

T(n)= T(n-3)+ O((n-2)log(n-2))+ O((n-1)log(n-1))+ O(n log n )

T(n)< = n * O(n log n)

T(n)< = O(n ^ 2 log n)

因此:

T(n)= O(n ^ 2 log n)