C计数法(Counting Sort)是一种非比较排序算法,用于整数排序。它的基本思想是统计数组中每个不同值的出现次数,然后根据这些计数来构建排序后的数组。
具体来说,C计数法包含以下步骤:
1. 确定输入范围:首先确定输入数组中元素的最大值和最小值,以便确定计数数组的长度。
2. 初始化计数数组:创建一个计数数组,其长度等于输入数组中元素的最大值与最小值之差加一。计数数组的初始值全部设为0。
3. 填充计数数组:遍历输入数组,对于每个元素,将其值作为索引,计数数组中对应的值加一。
4. 构建排序后的数组:遍历计数数组,根据计数数组中的值,将对应的元素添加到排序后的数组中。
C计数法的特点包括:
时间复杂度:最好、平均和最坏情况的时间复杂度都是O(n+k),其中n是数组的长度,k是计数数组的长度。
空间复杂度:O(n+k),需要额外的空间来存储计数数组。
稳定性:C计数法是稳定的排序算法,即具有相同值的元素在排序后保持原来的顺序。
C计数法适用于整数排序,特别是当输入数据范围有限时非常高效。但是,它不适用于浮点数或非整数排序。