线性排序 — 计数排序
2012-03-13 21:15
190 查看
来自同学家铭的分享,整理下作为自己的笔记。
算法的步骤如下:
找出待排序的数组中最大和最小的元素
将数组中值为i的元素出现的次数存入数组C的第i项
对所有的计数累加
C[i] += C[i-1];
反向填充目标数组
将元素i放在新数组的第C[i]项,每放一个就将C[i]减去1
效果图:
时间复杂度
当输入是n个[0,k]之间的整数时
时间复杂度为 Θ(n + k)。
计数排序不基于比较,
排序的速度快于任何比较排序算法。
局限性
在排序前需要知道数据的最大最小值
对于数据范围很大的数组,需要大量的时间和内存
桶排序
基数排序
注意点:如果想从高位到低位来进行调整,没次都要需要考虑上一位是否需要调整,会很麻烦,不如从低位来的简单
算法的步骤如下:
找出待排序的数组中最大和最小的元素
将数组中值为i的元素出现的次数存入数组C的第i项
对所有的计数累加
C[i] += C[i-1];
反向填充目标数组
将元素i放在新数组的第C[i]项,每放一个就将C[i]减去1
效果图:
时间复杂度
当输入是n个[0,k]之间的整数时
时间复杂度为 Θ(n + k)。
计数排序不基于比较,
排序的速度快于任何比较排序算法。
局限性
在排序前需要知道数据的最大最小值
对于数据范围很大的数组,需要大量的时间和内存
桶排序
基数排序
注意点:如果想从高位到低位来进行调整,没次都要需要考虑上一位是否需要调整,会很麻烦,不如从低位来的简单
相关文章推荐
- 线性时间排序之计数排序(算法导论8.2)
- 【算法导论】第五课 线性排序(基数排序 计数排序)
- 排序算法(五)-- 线性时间排序之计数排序
- 算法导论 第8章 线性时间排序-计数排序的原址排序
- 基数排序--基于计数排序的线性时间复杂度的排序算法
- 计数排序(线性复杂度的排序,且不需要进行大小比较)
- 线性排序----计数排序, 基数排序, 桶排序
- 【算法学习】线性时间排序-计数排序、基数排序和桶排序详解与编程实现
- 线性排序之:计数排序
- 线性排序之计数排序
- 排序算法之线性排序(计数排序和桶排序)--Java语言
- [算法学习]线性时间排序:计数排序、基数排序和桶排序
- 线性时间排序:计数排序、计数排序、桶排序
- 线性排序之计数排序
- 《算法导论》第8章 线性时间排序 (1)计数排序
- 【算法导论-学习笔记】以线性时间增长的排序——计数排序
- 算法导论:第8章 线性时间排序__计数排序
- 《算法导论》第8章 线性时间排序 (1)计数排序
- 【算法学习】线性时间排序-计数排序、基数排序和桶排序详解与编程实现
- 线性时间排序之计数排序,基数排序和桶排序