Sorting 关于排序算法复杂度的下界

Sorting 关于排序算法复杂度的下界,sorting,mergesort,lower-bound,Sorting,Mergesort,Lower Bound,我正在读R.Sedgewick和Kevin Wayne写的“算法第四版”: 这个结果为我们在设计排序算法时提供了一个指导,让我们知道我们能做得多好。例如,如果没有这样的结果,人们可能会开始尝试设计一种基于比较的排序算法,在最坏的情况下,它使用的比较数量是mergesort的一半。命题I中的下限表示,这样的努力是徒劳的——不存在这样的算法 在最坏的情况下,没有一种基于比较的排序算法使用的比较数是mergesort的一半,这是真的吗?当然,在O(nlogn)之外的情况下,您无法进行一般的基于比较的排

我正在读R.Sedgewick和Kevin Wayne写的“算法第四版”:

这个结果为我们在设计排序算法时提供了一个指导,让我们知道我们能做得多好。例如,如果没有这样的结果,人们可能会开始尝试设计一种基于比较的排序算法,在最坏的情况下,它使用的比较数量是mergesort的一半。命题I中的下限表示,这样的努力是徒劳的——不存在这样的算法


在最坏的情况下,没有一种基于比较的排序算法使用的比较数是mergesort的一半,这是真的吗?

当然,在
O(nlogn)
之外的情况下,您无法进行一般的基于比较的排序。这里有一个数学证明:

在最坏的情况下,没有比mergesort使用一半比较次数的算法,这是真的吗

这是一个完全不同的问题。比较次数的理论下限为lg(n!)

可能有一种算法比合并排序使用更少的比较,但仍然符合理论范围。这取决于合并排序的精确实现以及在最坏情况下需要进行的比较次数

根据:

在最坏的情况下,merge sort进行的比较数等于或略小于(n)⌈lg n⌉ - 2.⌈lg n⌉ + 1) ,介于(n lgn-n+1)和(n lgn+n+O(lgn))之间

请注意,这些不是精确的度量

但“优于合并排序”算法是否存在的问题归结为“略小于(n lgn-n+1)”与lg(n!)的接近程度


当预测实际性能(与复杂性不同)时要考虑的其他事项是:

  • 如果只计算比较,算法中隐藏的其他开销
  • 算法在常见用例中的表现;e、 g.当输入几乎按顺序开始时

1-例如,不假设输入列表的初始顺序


2-计数排序是
O(n)
,但它不依赖于比较

它明确地说“基于比较”。是的,这是真的。为什么听起来你很惊讶?Sedgewick说:“人们可能会开始尝试设计一种基于比较的排序算法,在最坏的情况下,它使用的比较数量是mergesort的一半。命题I中的下限表示,这样的努力是徒劳的——不存在这样的算法。”命题I到底是什么?命题I。没有任何基于比较的排序算法可以保证以少于lg(N!)的比较对N个项目进行排序。也许像Heapsort这样的算法只需要比mergesort一半的比较。Sedgewick在书中证明了命题I。