数据结构与算法之计数排序

计数排序概念

计数排序(Counting Sort)不是基于比较的排序算法,其核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。 作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。

计数排序是一种非比较排序算法,它通过确定每个元素在排序序列中的位置来实现排序。计数排序的核心思想是统计每个元素的出现次数,然后根据元素的值和出现次数构建有序序列。

计数排序的步骤如下:

  1. 找出待排序数组中的最大值,并确定计数数组的长度。计数数组的长度应为最大值加一,因为数组的下标从0开始。

  2. 初始化计数数组,将每个元素的出现次数初始化为0。

  3. 遍历待排序数组,统计每个元素的出现次数,并将其存储在计数数组中。计数数组的下标对应元素的值,数组的值对应元素的出现次数。

  4. 对计数数组进行累加操作,使得每个元素的值等于它前面所有元素的值之和。

  5. 创建一个临时数组,用于存储排序结果。

  6. 从后向前遍历待排序数组,根据元素的值在计数数组中查找对应的位置,并将元素放入临时数组中。

  7. 将临时数组中的元素复制回原始数组,完成排序。

计数排序的时间复杂度为O(n+k),其中n是待排序数组的长度

猜你喜欢

转载自blog.csdn.net/m0_64879847/article/details/131274652