计数排序局限性比较大,算法思想:假定输入是有一个小范围内的整数构成的(比如年龄等),利用额外的数组去记录元素应该排列的位置,思想比较简单。
计数排序是典型的不是基于比较的排序算法,基于比较的排序算法最少也要O(nlogn),有没有可能创造线性时间的排序算法呢?那就是不基于比较的排序算法;
如果数组的数据范围为0~100,则很适合此算法。计数排序使用一个额外的数组C,其中第i个元素是待排序数组A中值等于i的元素的个数。然后根据数组C来将A中的元素排到正确的位置。它只能对整数进行排序
算法步骤:
1、找出待排序的数组中最大和最小的元素
2、统计数组中每个值为i的元素出现的次数,存入数组C的第i项

本文探讨了计数排序算法的工作原理及其在处理小范围内整数时的优势。这种非比较型排序算法在特定场景下能达到线性时间复杂度O(n)。文章详细阐述了算法的四个步骤,并指出其适用于年龄排序等问题。由于算法需要额外空间,其空间复杂度为O(n+k),其中k为数据范围。计数排序是一种稳定的排序方法。
订阅专栏 解锁全文
2495

被折叠的 条评论
为什么被折叠?



