【发布时间】:2011-08-30 05:01:58
【问题描述】:
今天我正在阅读 Julienne Walker 关于排序的一篇很棒的文章 - Eternally Confuzzled - The Art of Sorting,有一件事引起了我的注意。我不太明白作者证明通过比较排序我们受限于 Ω(N·log N) 下限的部分
下限不那么明显。大多数排序算法的最低可能界限是 Ω(N·log N)。这是因为大多数排序算法使用项目比较来确定项目的相对顺序。任何通过比较排序的算法都将具有 Ω(N·log N) 的最小下限,因为比较树用于选择已排序的排列。可以轻松构建三个数字 1、2 和 3 的比较树:
1 < 2 1 < 3 1 < 3 2 < 3 3,1,2 2,1,3 2 < 3 1,2,3 1,3,2 2,3,1 3,2,1注意每个项目是如何与其他项目进行比较的,并且每条路径都会导致三个项目的有效排列。树的高度决定了排序算法的下限。因为必须有尽可能多的排列才能使算法正确,所以比较树的最小可能高度是 log N!,相当于 Ω( N·log N).
这似乎是一个非常合理的直到我不太明白的最后一部分(粗体) - 如何记录 N!相当于Ω(N·log N)。我一定是错过了 CopmSci 课程中的某些内容,无法进行最后一次转换。如果我们使用比较排序,我期待在此方面寻求帮助或获得其他证据的链接,以证明我们受到限制 Ω(N·log N)。 p>
【问题讨论】: