计数排序O(n)

今天又看到一个比较有意思的排序算法  原著

使用空间换时间的算法

要求:

  1. 整数
  2. 已知范围

步骤:

  一批整数组成的源数组arr

  • 需要先创建一个新的计数数组arrT,数组大小为:上面提到的已知范围(假设为3-9)的大小就为9-3+1=7,值用来计数,初始都为0
  • 扫描源数组arr,比如扫描得到的数值为5,那么就更新数组arrT的5-3+1 = 3,arrT[3] += 1
  • 重复上面的步骤,就算出了源数组arr 所有元素出现的顺序,并且计数的数组又是天然有序的
  • 读计数数组arrT,出现一次则记录一次,新记录的数据就有arr有序的排列结果
posted @ 2021-10-14 11:54  lion_eagle  阅读(38)  评论(0编辑  收藏  举报