插入排序算法的大θ表示法

时间:2012-10-10 09:18:21

标签: algorithm complexity-theory big-o insertion-sort big-theta

我正在研究书中的渐近符号,我无法理解作者的意思。我知道if f(n) = Θ(n^2) then f(n) = O(n^2)。但是,我从作者的话来理解插入排序函数算法f(n) = Θ(n)f(n)=O(n^2)

为什么呢?大欧米茄或大theta是否随着不同的投入而变化?

他说:

  

“在插入排序的最坏情况运行时间上绑定的Θ(n ^ 2)并不意味着在每个输入上插入排序的运行时间上绑定Θ(n ^ 2)。” p>

然而,对于大哦符号来说它是不同的。他什么意思?他们之间有什么区别?

我很困惑。我将其复制粘贴在下面:

  

由于O-notation描述了一个上限,当我们用它来约束最坏情况下的运行时   算法的时间,我们在每个输入上都有一个算法运行时间的界限。   因此,插入排序的最坏情况运行时间的O(n ^ 2)也适用于其运行   每次投入的时间。 Θ(n ^ 2)绑定在插入排序的最坏情况运行时间,   但是,并不意味着在每个输入上插入排序的运行时间上绑定Θ(n ^ 2)。   例如,当输入已经排序时,插入排序运行   Θ(n)时间。

4 个答案:

答案 0 :(得分:3)

  

大omega或大theta是否随着不同的输入而改变?

是。举一个更简单的例子,考虑从左到右的数组中的线性搜索。在最差和平均情况下,此算法采用f( n )= a × n / 2 + b 某些常量的预期步骤 a b 。但是当保证左侧元素始终保持您正在寻找的键时,它总是需要一个 + b 步骤。

由于Θ表示严格的界限,而Θ( n )!=Θ( n ²),因此两种输入的Θ不同

编辑:至于Θ和big-O在同一输入上是不同的,是的,这是完全可能的。考虑以下(不可否认的微不足道)的例子。

当我们将 n 设置为5时, n = 5且 n < 6都是真的。但是当我们将 n 设置为1时, n = 5是假的,而 n < 6仍然是真的。

同样,big-O只是一个上限,就像<在数字上,而Θ是一个严格的约束,如=。

(实际上,对于常量 a 和<,Θ更像是 a &lt; n &lt; b em> b ,即它定义了类似于一系列数字的东西,但原理是相同的。)

答案 1 :(得分:0)

参见CLRS第3版  第-44页(渐近符号,函数和运行时间) 它说 -

即使我们使用渐近符号来应用算法的运行时间we need to understand which running time we mean。有时我们对worst-case运行时间感兴趣。 Often, however, we wish to characterize the running time no matter what the input. In other words, we often wish to make a blanket statement that covers all inputs, not just the worst case.

来自上述段落:

  • 最坏情况提供算法运行时间的最大限制。 因此,插入排序的最坏情况运行时间的O(n ^ 2)也适用于每次输入的运行时间。

  • 但是Theta(n^2)绑定在插入排序的最坏情况运行时,但并不意味着Theta(n^2)限制了每个输入上插入排序的运行时间。 因为插入排序的最佳案例运行时间会产生Theta(n)。(当列表已经排序时)

  • 我们通常会写出算法的worst case时间复杂度,但是当最佳案例和平均案例进入问责制时,时间复杂度会根据这些情况而有所不同。

答案 2 :(得分:-1)

  

我们对每个输入的算法运行时间有一定的限制

这意味着如果有一组输入具有运行时间n^2而其他输入具有较少的输入,则算法为O(n^2)

  

Θ(n ^ 2)限制了插入排序的最坏情况运行时间,   然而,并不意味着Θ(n ^ 2)在运行时间上受到约束   在每个输入上插入排序

他说反过来不对。如果算法是O(n^2),则并不意味着每个输入都将以二次时间运行。

答案 3 :(得分:-3)

关于插入排序算法的学术理论在过去很遥远,但是从我在复制粘贴中的理解:

big-O表示法总是描述最坏的情况,但是big-Theta描述了典型数据的某种平均值。

看看这个:What is the difference between Θ(n) and O(n)?