如何确定具有阶段的算法的时间复杂度

时间:2015-01-13 15:55:07

标签: algorithm mathematical-optimization

给定一个算法有两个阶段。一个是初始化,需要时间O(n ^ 2)而另一个阶段是采用O(nlogn)的主要计算。那么整个算法的复杂性是多少?它最多可以是2或类似O(n ^ 2logn)。最好的描述将是

3 个答案:

答案 0 :(得分:0)

Its the maximum.

你可以在大多数算法书籍中找到这方面的证明,但这也是一个有趣的练习,试图自己证明。

答案 1 :(得分:0)

你可以把复杂度写成O(n + + n Log n),但是当第一个术语支配另一个(增长得更快)时,只需要O(n²)。

答案 2 :(得分:0)

我只是通过以下内容扩展@Yves Daoust的答案:

O(n² + n Log n) = 
  = O(n² * [1 + Log(n) / n]) = 
  ... (Log(n) / n) → 0, when n→∞ ...
  = O(n² * [1 + 0]) 
  = O(n²)