基于比较的确定性算法有时间复杂度下界O(nlogn),该证明的思路是简单的:考虑基于比较地给一个全排列σ排序,第一次比较σi1,σj1两个元素。σ分为两类,一类满足σi1<σj1,一类满足σi1>σj1;在每一类中,又可以分为σi2<σj2和σi2>σj2。如果把这种分类看成一颗二叉树的话,它的叶节点就有n!个。排序算法的优劣就在于怎么选择每一次的ik,jk,因为这决定了二叉树的形态。为了让排序算法最优秀,应当让最坏的也就是深度最大的叶节点的深度尽量小。因此这应当尽量是一颗平衡树,此时最大深度为log2(n!)。根据Stirling's Formula,n!∼2nπ(en)n,因此O(logn!)=O(nlogn)。可见任何基于比较的排序算法都有复杂度下界O(nlogn)。
基于比较的排序算法是没有利用数字本身的信息的,这类算法称为ordinal的。利用数字本身信息的算法称为cardinal的。考虑以下经典的整数排序问题:给n个数排序,每个数都在集合{0,1,2,⋯,m−1}中。下面我们给出一个整数排序问题的确定性算法,复杂度为O(nloglogn)且只需要线性空间。(通过引入随机性,随机算法可以做到期望时间O(nloglogn)和线性空间解决整数排序。)