合聚咖

合聚咖

计数排序(counting sort)

admin

计数排序是一种非比较排序算法,它适用于整数排序。计数排序假设所有输入元素都在特定的范围内,比如介于1到K之间。

核心思想是为每个可能的输入值建立一个计数器,统计小于等于该值的元素数量。例如,对于数列 7 4 2 1 5 3 1 5,计数器会显示小于等于每个值的元素数量:计数器值分别为8、7、6、5、4、3、2、1,对应元素在排序后的位置。

通过累加计数器值,我们可以找到每个元素在最终排序结果中的位置。对于数列示例,1在第一位和第二位(第一个1排在第二个1之前),5在第六位和第七位,以此类推。

计数排序的时间复杂度为O(n+k),其中n是元素个数,k是元素的取值范围。当k相对n较小,算法效率很高。例如,对于数列排序,k为元素的最大值减去最小值加一。

计数排序是稳定排序,这意味着相同元素在排序后的顺序与它们在原始数组中的顺序相同。这是由于计数排序通过倒序遍历数组,确保相同元素按照原始位置排序。

计数排序是线性时间算法,特别适用于整数排序,其时间复杂度与输入数据的范围相关。当数据范围较小或接近时,计数排序非常高效。在数据范围较小且重复元素多的场景中,计数排序优于比较排序算法。