如何计算最佳案例时间复杂度

时间:2015-04-05 07:13:13

标签: big-o time-complexity complexity-theory asymptotic-complexity

如何为2n²3⋅log₂(n)2n² + 10n等公式找到最佳案例时间复杂度?什么是确切的程序?

1 个答案:

答案 0 :(得分:0)

对于固定公式,最佳,平均和最差情况相同。复杂性将是

  • 2n² ∈ Θ(n²)
  • 3⋅log₂(n) ∈ Θ(log n)
  • 2n² + 10n ∈ Θ(n²)

算法可能具有最佳的案例复杂性,这取决于输入。 例如。看看冒泡排序。

Input: A[0..n-1] 

switched = false;
for(i = 0; i < n; i++)
{
   switched = false;
   for(j = 0; j < n-i-1; j++)
   {
      if(A[j] > A[j+1])
      {
         switch(A,j,j+1);
         switched = true;
      }
   }

   if(!switched)
      break;
}

最糟糕的情况是从大到小的排序列表,导致O(n²)的复杂性。但是如果您的输入是从小到大的排序列表,则算法仅执行内部for循环一次,并且由于它不必切换元素,因此算法终止。这为您提供O(n)的最佳案例复杂性。