计数排序(Counting sort)是一种非比较排序算法,适用于一定范围内的整数排序。它的基本思想是通过统计元素出现的次数来确定元素在最终排序结果中的位置。
计数排序的步骤如下:
- 找出待排序数组中的最大值,并创建一个长度为最大值加一的辅助数组count,用于统计每个元素出现的次数。
- 遍历待排序数组,将每个元素在count数组中对应的位置的值加一。
- 遍历count数组,累加前一个位置的值,使count数组中的每个位置存储的值表示小于等于该位置的元素个数。
- 创建一个与待排序数组相同大小的结果数组result。
- 遍历待排序数组,根据count数组中的值确定每个元素在结果数组中的位置,并将该元素放入结果数组中。
- 返回结果数组作为排序结果。
计数排序的时间复杂度是O(n+k),其中n是待排序数组的长度,k是最大的元素值。由于计数排序需要额外的辅助数组来统计元素出现的次数,因此它的空间复杂度为O(n+k)。
计数排序的优点是速度快,稳定性好,适用于一定范围内的整数排序。然而,计数排序的缺点是需要额外的辅助数组,且只适用于非负整数排序。
下面是使用C++语言实现计数排序Counting sort算法的示例代码:
#include