关于插入排序时间复杂度

时间:2017-10-09 02:46:35

标签: algorithm time insertion-sort

在我的教科书中,它说插入排序的时间复杂度是Θ(n 2 )。 我无法理解,因为插入排序的最佳情况是O(n)。 我知道大theta是低和上限。 因此,插入排序的时间复杂度是O(n 2 )而不是Θ(n 2 )是正确的吗? 对不起,我的英语很差。

3 个答案:

答案 0 :(得分:0)

对于所有情况,

O Θ并非最坏情况;这是<==之间的差异。

例如算法 Merge sort 是O(n ^ 2),但它不是Θ(n ^ 2),因为它比那更快。

答案 1 :(得分:0)

在谈论一段代码的“时间复杂性”时,你必须要小心,因为你可以指出没有一个单一的时间复杂性。一段代码可以具有最佳情况时间复杂度,最坏情况时间复杂度,平均情况时间复杂度等。 ,他们并不一定都是一样的。

说“插入排序是Θ(n 2 )”有点草率,因为它不是插入排序本身那是Θ(n 2 ),而是最糟糕的运行时。通常,如果你说一段代码是O(f(n)),你说它的运行时是O(f(n)),通常这意味着你在谈论最坏情况的运行时

插入排序的最佳情况运行时确实是Θ(n),这在输入已经排序时发生。最坏情况的运行时是Θ(n 2 ),它发生在反向排序列表中。假设输入是n个元素的随机排列,则平均情况运行时也是Θ(n 2 )。那些更精确的语句可能比“插入排序是O(n)”或“插入排序是Θ(n 2 )更好”,因为它们捕获了更多关于插入排序的运行时。 / p>

请注意,仅使用O,Θ或Ω并不会自动意味着您正在谈论最佳/最差/平均案例复杂性。例如,您可以使用Θ表示法来讨论最佳情况,最坏情况或平均情况运行时。

答案 2 :(得分:0)

一般来说,&#39; 算法的时间复杂度&#39;一个人通常会说所有类型的输入,不限于此类更糟糕最佳情况方案。

在这种一般情况下,对于所有类型的输入,一种情况(最坏情况)足以将复杂性类别确定为更差的类

因此,当我们谈到所有输入的时间复杂度时,最好的情况会产生Θ(n)无效。

但是,您还可以针对特定方案分析显式算法,例如:仅适用于最佳情况或最坏情况等。然后你限制算法,只允许这种类型的输入。