如何估计时间复杂度的最佳,最差和平均情况?

时间:2011-09-16 15:29:32

标签: algorithm time-complexity

我们如何判断算法的获取时间复杂度是最佳情况还是最坏情况还是平均情况? 例如,如果我们把时间复杂性作为 t(n)= 2n ^ 2 + 3n -1,如何估计最佳或最差或平均情况?

4 个答案:

答案 0 :(得分:2)

首先注意:在最差,最好和平均的情况下,t(n)= 2n ^ 2 + 3n -1总是big O(n^2)

在某些情况下,复杂性取决于算法的输入,在这些情况下,人们通常会在最坏的情况下计算复杂性。

但是,当您认为最坏情况不相关且限制性太强时,您会进行平均案例分析或摊销分析。例如,如果算法在O(n)中对其输入的(1-1 / n)%起作用,而O(n ^ 2)在(1 / n)%中起作用,则不要说它是O(n ^ 2),并给出更像O(n)的平均复杂度。但最坏的情况仍然可能发生。

请查看这篇文章,了解有关平均案例分析和摊销分析的更多详细信息。

Difference between average case and amortized analysis

和维基百科的文章:

答案 1 :(得分:1)

您只能通过仔细检查算法来判断。

如果你知道完全 t(n)= 2n ^ 2 + 3n-1,那么t(n)= O(n ^ 2),这是最好的,最差的,因此平均时间复杂度。

答案 2 :(得分:0)

简化为O(2n ^ 2)或仅仅O(n ^ 2)。您删除了所有其他元素,因为它简化了。

这被称为Big O表示法。这只是最糟糕的情况。其他人在大多数情况下都无关紧要。

答案 3 :(得分:0)

enter image description here    >> Bast Case:

如果您找到了最佳案例复杂性,那么请检查图片和以下声明。

T(n)= c1n+c2(n-1)+c4(n-1)+c5(n-1)+c8(n-1)
      (c1+c2+c5+c8)n-(c2+c4+c5+c6)

n 最大功率 1 ,因此我们说最佳案例复杂性是插入排序的 O(n)的

>>最坏情况:

如果您发现了最差情况复杂性,那么请检查图像和以下声明。

T(n)= c1n+c2(n-1)+c4(n-1)+c5(n(n+1)/2)+c6(n(n-1)/2)+c7(n(n-1)/2)+c8(n-1)
      (c5/2 + C6/2 +C7/2)n^2 +(c1+c2+c4+ c5/2 -C6/2 -C7/2+ c8)

n 最大功率 2 ,因此我们说最佳案例复杂性是插入排序的为O(n ^ 2)即可。