了解何时使用theta来解决时间复杂性

时间:2019-01-15 14:52:18

标签: big-o complexity-theory

我(相信)我理解Big-O,Big-Ω和Big-Θ的定义; Big-O是渐近上限,Big-Ω是渐近下限,Big-Θ是渐近紧界限。但是,在某些情况下(例如在插入排序中),我一直对Θ的用法感到困惑:

enter image description here

据我了解,这表示插入排序将:

  1. 至少采用线性时间(运行时间不会比线性时间快);根据Big-Ω。

  2. 最多花费n^2时间(最多花费n^2);根据Big-O。

我对何时使用Big-Θ的理解引起了困惑。为此,我被认为是只有在Big-O和Big-Ω的值相同时才能使用Big-Θ。如果是这样,为什么在Θ(n^2)Ω值不同的情况下将插入排序视为O

1 个答案:

答案 0 :(得分:1)

基本上,只有在算法运行时间的上限和下限之间没有渐近间隙时,才可以使用Big-Θ:

在您的示例中,插入排序最多花费O(n ^ 2)时间(在最坏的情况下),而花费Ω(n)时间(在最好的情况下)。因此,O(n ^ 2)是算法的时间上限,而Ω(n)是算法的下限。由于这两个不相同,因此您不能使用Big-Θ来描述插入排序算法的运行时间。

但是,考虑使用Selection-Sort算法。其最坏情况下的运行时间为O(n ^ 2),其最坏情况下的运行时间为Ω(n ^ 2)。因此,由于上限和下限相同(渐近),因此可以说选择排序算法的运行时间为Θ(n ^ 2)。