计数排序O(n)
今天又看到一个比较有意思的排序算法 原著
使用空间换时间的算法
要求:
- 整数
- 已知范围
步骤:
一批整数组成的源数组arr
- 需要先创建一个新的计数数组arrT,数组大小为:上面提到的已知范围(假设为3-9)的大小就为9-3+1=7,值用来计数,初始都为0
- 扫描源数组arr,比如扫描得到的数值为5,那么就更新数组arrT的5-3+1 = 3,arrT[3] += 1
- 重复上面的步骤,就算出了源数组arr 所有元素出现的顺序,并且计数的数组又是天然有序的
- 读计数数组arrT,出现一次则记录一次,新记录的数据就有arr有序的排列结果