线性时间排序:计数排序、计数排序、桶排序

计数排序:排序

对于比较密集的整数,好比全校学生的成绩(0-100),直接放入101个桶(计数器),设置桶宽为1便可,稳定排序。数据

基数排序:时间

对于已知长度的整数,好比三位数,能够先排序个位数,而后十位数,而后百位数(不是从上往下排),稳定排序。

桶排序:

对于[0,1),这样的double型均匀分布,能够采用桶排序,桶内采用快排等其余排序思路,稳定排序。

 

题目:从100G个32位int数据里取出中位数

解答:32无符号int最多只能表示4G的数据,所以能够划出1M个桶,每一个桶宽度为4K,读入数据,对每一个桶进行计数排序(须要用long类型计数),找到中位桶,以及中位数在其的位置,而后对中位桶进行计数排序便可,需两趟读取,时间复杂度2N。