【发布时间】:2021-01-05 06:24:31
【问题描述】:
已知插入排序的最佳情况运行时间为n,最坏情况运行时间为n2。在那种情况下,它有很大的theta值吗?
【问题讨论】:
标签: algorithm big-o complexity-theory insertion-sort
已知插入排序的最佳情况运行时间为n,最坏情况运行时间为n2。在那种情况下,它有很大的theta值吗?
【问题讨论】:
标签: algorithm big-o complexity-theory insertion-sort
简短的回答,是的,确实如此。 Big-Theta 始终存在。问题是:你是在谈论最好的情况、最坏的情况还是平均情况?和你能证明吗?
最佳情况和最坏情况与 Big-O 或 Big-Theta 不同。最好的情况有一个 Big-Theta。最坏的情况有不同的 Big-Theta。它们不一样。
让我解释一下我所做的区别。
进行复杂性分析的人通常对他们的符号非常松懈。这是一个很好的问题,需要精确。案例和界限是不同的正交概念。重要的是不要将它们混为一谈。
每个案例都有自己的界限。当您分析算法的复杂性时,您需要首先确定您正在分析的情况。您是否正在寻找最佳案例性能?最坏的情况?平均情况?
然后,当您分析该案例时,您可以尝试确定其上限和下限。
重要的是要认识到没有单数上限或下限。其中有很多。例如,让我们看看插入排序的最坏情况性能。它有许多下界和许多上界。
下限和上限设置了算法在最佳/最差/平均情况下的表现好坏的下限和上限。但是,如果它们太松散,它们就没那么有用了。越紧越好。
如果您能够证明下限和上限相同,那么您将得到一个精确的界限 Θ。大西塔。为此,您需要将上限和下限挤在一起,直到它们在正确的答案处相遇。
如果我们能够证明插入排序的最坏情况性能最好是 Ω(n2),最坏情况是 O(n2),那么我们就知道了正好 Θ(n2)。
我上面写的所有内容都是关于最坏情况的性能。如果您想查看最佳案例性能或平均案例,您必须再次重复所有分析。您必须建立自己的上限和下限并收紧它们,直到它们相等。
如果你这样做了,你最终会得到三个答案。三个 Big-Theta。
事实上,你甚至可以想出更多的 Big-Theta。最好的、最坏的和平均的案例并不是人们可以分析的唯一案例。当然,它们是最常见的,但我可以想象其他的会有自己的下限和上限。
【讨论】: