我们所知的所有基于比较的排序算法(Comparison Sorting Algorithm)都有 Ω(nlogn) 的最坏情况下的复杂度下界。仅有桶排序和基数排序等一类非比较排序算法可以得到更好的复杂度。

那么,是否存在一个 o(nlogn) 的比较排序算法,只是我们没有发现呢?假定存在这样的算法,我们称之为 TUCS(the Ultimate Comparison Sort)。我们一眼就能看出,TUCS 的运行时间 R(n) 满足 R(n)O(nlogn),R(n)Ω(n);上界由归并排序给出,下界则是由于序列中的每个元素都起码要被访问一次。

我们发现,当序列中元素均不相等时,它们可能的大小关系有 n! 种。假定在第 m 次比较前,我们已能确定序列元素的大小关系一定是这 n! 种中的某 p 种(记作 Cm)中的一个,那么在经过比较 ai<aj 后,若结果为真,则我们可以进一步确认实际的大小关系是这 p 种中的某 q 种(记作 Cq)中的一个;若结果为非,则我们进一步确认实际的大小关系是这 p 种中的某 r 种(记作 Cr)中的一个。Cm 中每一种大小关系都至少符合 CqCr 中的一种,且只符合一种,故 p=q+r

我们完全可以让每次比较后可能的大小关系的集合变为 CqCr 中大小较大的那一个,即 |Cm+1|=max(q,r)|Cm|2;在此种情况下,将可能的大小关系的集合的大小削减至 1 所需的比较次数是 Θ(log|C0|)=Θ(logn!) 级别的。于是 R(n)Ω(logn!)

接下来我们研究 Θ(logn!) 是什么。由放缩 (n2)n/2n!nn 以及 log(nn)Θ(nlogn),log(n2)n/2=nlogn22Θ(nlogn) 可知 logn!Θ(nlogn),即 Θ(logn!)=Θ(nlogn)

也就是说,TUCS 的复杂度就是 Θ(nlogn)。世界上再没有最坏情况下复杂度更好的比较排序算法了!