8.1 排序算法下界
比较排序:次序依赖之间的比较:
由于两两比较,因此可以用决策树来刻画,那么节点数就要满足大于 n!, 那么就需要nlogn级别的比较数量。
8.2 计数排序
n个输入数据,每个都是0-k之间的整数。
算法:从头到尾遍历数组,把0-k累积的数量记一下,然后做累和,然后再遍历一遍,一个一个放进去,每放进去一个对应位置-1
8.3 基数排序
8.4 桶排序
使用场景:排序的数服从[0, 1]均匀分布
排序方式:将[0, 1]等分成n段,先放入段内,再在段内排序。
9 中位数和顺序统计量
选择问题:n个数中选取第i个顺序统计量的问题。
9.1 最小值和最大值
显然有O(n)的算法。同时找最小值最大值的话,可以两个一起找。
9.2 期望线性时间
与快速排序类似,采用分治思想,只需要处理划分的一边就可以了,期望时间是线性的。
9.3 最坏线性时间
稍后补充