Sorting 为什么我们对最佳和一般情况也使用大O表示法?

Sorting 为什么我们对最佳和一般情况也使用大O表示法?,sorting,data-structures,time-complexity,big-o,Sorting,Data Structures,Time Complexity,Big O,我们可以看到不同算法的最佳、最差和平均情况时间复杂度,然后假设对于合并排序,最佳情况应该是Ω(n logn),而不是O(n logn)。类似地,对于一般情况,应该给出Θ(n logn),但也使用了大O符号。不管是最佳情况还是平均情况,这个大O符号在这个表中随处可见。请解释一下原因。在实践中,有两种版本的渐近符号在使用 形式的、数学上严格的渐近性。如果你在数学环境中工作(例如,你试图证明某个表达式的严格界限,或者你试图论证某个算法不存在的原因),那么在进行论证的过程中,你绝对需要从O,Ω,O,ω


我们可以看到不同算法的最佳、最差和平均情况时间复杂度,然后假设对于合并排序,最佳情况应该是Ω(n logn),而不是O(n logn)。类似地,对于一般情况,应该给出Θ(n logn),但也使用了大O符号。不管是最佳情况还是平均情况,这个大O符号在这个表中随处可见。请解释一下原因。

在实践中,有两种版本的渐近符号在使用

  • 形式的、数学上严格的渐近性。如果你在数学环境中工作(例如,你试图证明某个表达式的严格界限,或者你试图论证某个算法不存在的原因),那么在进行论证的过程中,你绝对需要从O,Ω,O,ω,Θ等中正确选择,因为它们具有特定的技术意义。这就是为什么,例如,如果你拿起一篇CS理论论文,你会看到不同的渐近符号混合在一起

  • 非正式的非专业人员用法。大多数实践软件工程师都对大O表示法感兴趣,因为它关系到整个程序的效率。在这种情况下,big-O表示法的使用方式在技术上并不正确,但仍然可以很好地代表其含义。例如,有人可能决定选择一个数据结构而不是另一个,理由是“第一个数据结构上的操作需要时间O(logn),而第二个数据结构上的操作需要时间O(n)”,即使这样的语句类似于这样说“Amit比Pranav短,因为Amit最多2米高,Pranav最多5米高。”虽然这在数学上并不正确,但从这个词通常被使用的方式来看,它通常很清楚它的意思

这些符号的挑战在于,如果你期望一个算法运行时的超严格、精确、数学上精确的描述,而你得到了一个外行使用的big-O符号,你会感到困惑,因为所说内容的字面意思可能是错误的。同样,如果你是一个习惯于外行的软件工程师大O符号的版本,有人开始在Θ和Ω符号周围翻来覆去,这可能会让人困惑,因为你可能不习惯看到它

我认为对你的问题的“最佳”答案是“制作表格的人可能应该使用更精确的渐近表示法,因此,尽管从技术上讲他们所做的并不理想,但以这种方式呈现信息是一种相对常见的做法。“由于我倾向于在Theoryland花费大量时间,我个人更希望他们在这里使用不同的渐近符号,但由于我也与一群软件工程师打交道,我完全理解他们为什么不这样做。

可能的重复