计数排序概念
计数排序(Counting Sort)不是基于比较的排序算法,其核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。 作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。
计数排序是一种非比较排序算法,它通过确定每个元素在排序序列中的位置来实现排序。计数排序的核心思想是统计每个元素的出现次数,然后根据元素的值和出现次数构建有序序列。
计数排序的步骤如下:
-
找出待排序数组中的最大值,并确定计数数组的长度。计数数组的长度应为最大值加一,因为数组的下标从0开始。
-
初始化计数数组,将每个元素的出现次数初始化为0。
-
遍历待排序数组,统计每个元素的出现次数,并将其存储在计数数组中。计数数组的下标对应元素的值,数组的值对应元素的出现次数。
-
对计数数组进行累加操作,使得每个元素的值等于它前面所有元素的值之和。
-
创建一个临时数组,用于存储排序结果。
-
从后向前遍历待排序数组,根据元素的值在计数数组中查找对应的位置,并将元素放入临时数组中。
-
将临时数组中的元素复制回原始数组,完成排序。
计数排序的时间复杂度为O(n+k),其中n是待排序数组的长度