Sorting 关于排序算法复杂度的下界
我正在读R.Sedgewick和Kevin Wayne写的“算法第四版”: 这个结果为我们在设计排序算法时提供了一个指导,让我们知道我们能做得多好。例如,如果没有这样的结果,人们可能会开始尝试设计一种基于比较的排序算法,在最坏的情况下,它使用的比较数量是mergesort的一半。命题I中的下限表示,这样的努力是徒劳的——不存在这样的算法Sorting 关于排序算法复杂度的下界,sorting,mergesort,lower-bound,Sorting,Mergesort,Lower Bound,我正在读R.Sedgewick和Kevin Wayne写的“算法第四版”: 这个结果为我们在设计排序算法时提供了一个指导,让我们知道我们能做得多好。例如,如果没有这样的结果,人们可能会开始尝试设计一种基于比较的排序算法,在最坏的情况下,它使用的比较数量是mergesort的一半。命题I中的下限表示,这样的努力是徒劳的——不存在这样的算法 在最坏的情况下,没有一种基于比较的排序算法使用的比较数是mergesort的一半,这是真的吗?当然,在O(nlogn)之外的情况下,您无法进行一般的基于比较的排
在最坏的情况下,没有一种基于比较的排序算法使用的比较数是mergesort的一半,这是真的吗?当然,在
O(nlogn)
之外的情况下,您无法进行一般的基于比较的排序。这里有一个数学证明:
当预测实际性能(与复杂性不同)时要考虑的其他事项是:
- 如果只计算比较,算法中隐藏的其他开销
- 算法在常见用例中的表现;e、 g.当输入几乎按顺序开始时
1-例如,不假设输入列表的初始顺序
2-计数排序是
O(n)
,但它不依赖于比较 它明确地说“基于比较”。是的,这是真的。为什么听起来你很惊讶?Sedgewick说:“人们可能会开始尝试设计一种基于比较的排序算法,在最坏的情况下,它使用的比较数量是mergesort的一半。命题I中的下限表示,这样的努力是徒劳的——不存在这样的算法。”命题I到底是什么?命题I。没有任何基于比较的排序算法可以保证以少于lg(N!)的比较对N个项目进行排序。也许像Heapsort这样的算法只需要比mergesort一半的比较。Sedgewick在书中证明了命题I。