何时使用大O表示法以及何时使用大Theta表示法

时间:2017-02-01 17:57:48

标签: algorithm analysis

我知道Big O是一个上限,而Big Theta是一个紧密的界限,例如我们考虑函数f(n)= O(g(n))或类似的Big Theta。 但是我们怎么知道使用Big theta表示法而不是Big O表示特定算法会更好?

例如,选择排序的时间复杂度为N ^ 2的Big Theta而不是N ^ 2的Big O,为什么?

2 个答案:

答案 0 :(得分:1)

这不是一个更好的问题,而是你想要学习什么的问题。 如果您想研究最坏的情况,那么您可以使用上限符号。请记住,越严格越好,但在某些情况下,很难计算紧束缚。 一般来说,当人们谈论big-O或big-teta时,他们的意思是同样的,所以在Selection sort中你也可以使用big-O表示法

答案 1 :(得分:1)

我同意上面的回答,它更多地是关于您正在尝试研究的算法。如果只需要最坏的情况下的运行时间,这意味着在最坏的情况下该算法将至少在一定时间内运行,那么最好使用Big-O。例如,对于选择排序,最坏的情况是O(n ^ 2)。如果您想研究最坏情况和最佳情况下的运行时间,那么您还想找到Big-Omega。如果这些相同(在最佳和最差情况下,该算法将在相同的时间量内运行),那么您将要使用Big theta声明这一次对于所研究的算法来说是一个紧要关头。这通常更具描述性,因为它可以更好地了解算法如何在大型数据集上运行。对于选择排序,因为最佳和最差情况下的运行时间为n ^ 2(由于嵌套循环),所以平均值将为theta(n ^ 2)。