计数排序
Posted 血影雪梦
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计数排序相关的知识,希望对你有一定的参考价值。
本总结是是个人为防止遗忘而作,不得转载和商用。
基本思想
计数排序的核心思想,是用空间换取时间,本质是建立了基于元素的Hash表。
例子
数组原始数据如下:
给定一个辅助数组,因为A的最大的数是5这里给定一个长度为6的数组C。
1,初始化C:
2,统计数组A中值为i的元素个数,将其放在C的对应位置
如:A中有2个0,所以C[0] = 2,A中有0个1,所以C[1] = 0。
3,统计数组A中值小于等于i的元素个数
即:
C[0]= 2
C[1]= C[1] + C[0] = 2
C[2]= C[2] + C[1] = 4
...
4,从后向前执行最后一个循环
i = 7时,A[7] = 3, C[3] = 7,于是就令B[7-1] =3
i = 6时,A[7] = 0, C[0] = 2,于是就令B[2-1] =0
...
这样最后出来的数组B就是对A的排序了。
时间复杂度和其他
计数排序是稳定的。
话说,这里需要实现申请好空间,如:如果是字母那就要申请个256或65535的空间。这个和数组的长度N是无关的,所以其空间复杂度是O(1)。
以上是关于计数排序的主要内容,如果未能解决你的问题,请参考以下文章