2019-04-28 20:51:54
首先,所有基于比较的排序算法,都是以决策树模型作为依据的。




对于待排序的 n 个元素,其所有可能的排序种数为 n! ,其决策树高度为h (即为排序算法比较的次数)
高度为 h 的决策树,最多有叶子节点
个,所以就有 

高度为 h 的决策树,最多有叶子节点



由斯特林近似公式:

得

其中,
![\Theta (\frac{1}{n} )\in \left[ e^{\frac{1}{12n+1} } \,,e^{\frac{1}{12n}} \right]](https://i-blog.csdnimg.cn/blog_migrate/b998f1ee717c43503a758e6a8bbbc315.png)
故,


【补充】
如果不使用斯特林公式,依然可以证明得到log(n!)和nlogn是同阶的。
1)显然的是n! < n^n,因此log(n!) < nlogn
2) n! = n * (n - 1) * ... * 1, 我们可以将前n / 2的数字放缩到n / 2,后面的所有数字舍去,因此n! > (n / 2) ^ (n / 2),得log(n!) > nlog(n)
综上,logn! 和 nlogn是同阶的。