排序算法

排序算法很多,常见的归并排序,快速排序,在时间效率上,最坏情况下至少需要O(nlgn)的时间,这是为什么呢?已知n个数有n!种排列,而我们需要的只有一种排列,这就好比在n个数里猜一个数k,你需要多久才能找到,玩过相关游戏的小伙伴肯定有经验,先用中间的数去试,这样范围就缩小一半,再接着一半一半地缩小,所以经过log(n)次就一定能找到k。

这其实是二叉树叶节点为n的树的高度。那么同样地,要从n!里找到一种排列,需要猜log(n!)次,而根据斯特林公式,n!等效于O(nˆn),那么log(n!)等价于O(nlog(n))。这通常是比较排序算法最坏情况下的性能边界。

还有就是计数排序,通常考虑数据分布情况,在性能上能达到线性级

原文地址:https://www.cnblogs.com/who-a/p/5678288.html