线性排序 — 计数排序

来自同学家铭的分享,整理下作为自己的笔记。
  • 算法的步骤如下:
    • 找出待排序的数组中最大和最小的元素
    • 将数组中值为i的元素出现的次数存入数组C的第i项
    • 对所有的计数累加
    • C[i]  +=  C[i-1];
    • 反向填充目标数组
    • 将元素i放在新数组的第C[i]项,每放一个就将C[i]减去1
  • 效果图:

  • 时间复杂度
    • 当输入是n个[0,k]之间的整数时
    • 时间复杂度为 Θ(n + k)。
    • 计数排序不基于比较,
    • 排序的速度快于任何比较排序算法。
  • 局限性
    • 在排序前需要知道数据的最大最小值
    • 对于数据范围很大的数组,需要大量的时间和内存
  • 桶排序

 

  • 基数排序
    •   
    • 注意点:如果想从高位到低位来进行调整,没次都要需要考虑上一位是否需要调整,会很麻烦,不如从低位来的简单

 

posted on 2012-03-13 21:15  aho  阅读(373)  评论(0编辑  收藏  举报

导航