计数排序是一个非基于比较的整数排序算法,用空间换时间,优势在于在对一定范围内的整数排序时,它的复杂度为Ο(n+k)(其中k是整数的范围)。
基本思想及实现
基本思想: 假设输入的线性表L的长度为n,L=L1,L2,..,Ln;线性表的元素属于有限偏序集S,|S|=k且k=O(n),S={S1,S2,..Sk};则计数排序可以描述如下:
- ① 扫描整个集合S,对每一个Si∈S,找到在线性表L中小于等于Si的元素的个数T(Si);
- ② 扫描整个线性表L,对L中的每一个元素Li,将Li放在输出线性表的第T(Li)个位置上,并将T(Li)减1。
使用Swift编写简单的代码实现,如下:
测试用例及结果
|
|