Sorting Bound
顺序比较算法的时间复杂度的下界
NlogN
只要是顺序比较
最坏情况下时间复杂度不可能比这个更好
因为要确定N个的关系,至少要lgN!次比较
数学上,lgN!又近似NlogN
计数排序
时间复杂度
o(N + R)
- 创造一个R大小的数组储存计数 R
- 计数每个出现的次数 N
- 计算每个item的目标位置 R
- 创造一个N大小的数组储存排序好的数据
- 复制
如果N大于R(字母表),用计数排序比较好
而且是稳定的(相同元素不用排序)
对比
插入排序:已经要排序好了的时候,时间复杂度o(N)
合并排序:什么时候都是NlogN(它是最快的而且稳定的排序)
快速排序:如果是随机的,他就是最快的,但是不是稳定的
LSD Sort
从右到左的列开始排序,根据优先级进行计数排序
对比
相同的元素多:LSD更快
不同的元素多:merge sort更快