C语言计数排序(Counting Sort)算法详解及示例代码
计数排序(Counting Sort)是一种线性时间复杂度的排序算法,适用于待排序元素范围较小的情况。它的基本思想是通过统计每个元素出现的次数,然后根据统计信息将元素排列到正确的位置上。
算法步骤如下:
- 找出待排序数组中的最大值,确定计数数组的大小。假设待排序数组为
arr
,长度为size
,最大值为max_value
。 - 创建一个计数数组
count
,大小为max_value + 1
,并将其所有元素初始化为0。 - 遍历待排序数组,统计每个元素出现的次数,将统计结果存储在计数数组中。对于每个元素
arr[i]
,将count[arr[i]]
的值加1。 - 对计数数组进行累加操作,使得
count[i]
存储的是小于等于i
的元素个数。 - 创建一个临时数组
result
,大小与待排序数组相同。 - 从后向前遍历待排序数组,根据计数数组中的统计信息将元素放置到正确的位置上。对于每个元素
arr[i]
,将其放置在result[count[arr[i]]-1]
的位置上,并将count[arr[i]]
的值减1。 - 将临时数组
result
中的元素复制回待排序数组arr
中,排序完成。
下面是使用C语言实现的计数排序的示例代码: