我(相信)我理解Big-O,Big-Ω和Big-Θ的定义; Big-O是渐近上限,Big-Ω是渐近下限,Big-Θ是渐近紧界限。但是,在某些情况下(例如在插入排序中),我一直对Θ的用法感到困惑:
据我了解,这表示插入排序将:
至少采用线性时间(运行时间不会比线性时间快);根据Big-Ω。
最多花费n^2
时间(最多花费n^2
);根据Big-O。
我对何时使用Big-Θ的理解引起了困惑。为此,我被认为是只有在Big-O和Big-Ω的值相同时才能使用Big-Θ。如果是这样,为什么在Θ(n^2)
和Ω
值不同的情况下将插入排序视为O
?
答案 0 :(得分:1)
基本上,只有在算法运行时间的上限和下限之间没有渐近间隙时,才可以使用Big-Θ:
在您的示例中,插入排序最多花费O(n ^ 2)时间(在最坏的情况下),而花费Ω(n)时间(在最好的情况下)。因此,O(n ^ 2)是算法的时间上限,而Ω(n)是算法的下限。由于这两个不相同,因此您不能使用Big-Θ来描述插入排序算法的运行时间。
但是,考虑使用Selection-Sort算法。其最坏情况下的运行时间为O(n ^ 2),其最坏情况下的运行时间为Ω(n ^ 2)。因此,由于上限和下限相同(渐近),因此可以说选择排序算法的运行时间为Θ(n ^ 2)。