您的位置:首页 > 其它

线性排序 — 计数排序

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)。

计数排序不基于比较,

排序的速度快于任何比较排序算法。

局限性

在排序前需要知道数据的最大最小值

对于数据范围很大的数组,需要大量的时间和内存

桶排序



基数排序



  

注意点:如果想从高位到低位来进行调整,没次都要需要考虑上一位是否需要调整,会很麻烦,不如从低位来的简单
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: