🗒️Day24 【概念解析】计数排序
00 分钟
2023-10-15
2023-10-27
type
status
date
slug
summary
tags
category
icon
password

整理定义

中文名称:计数排序
英文名称:counting sort
出处
定义
中国大百科全书
算法将输入的数据值转化为键存储在额外开辟的数组空间中。作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。算法时间复杂度为线性时间,但空间复杂度较高。
百度百科
计数排序是一个非基于比较的排序算法,该算法于1954年由 Harold H. Seward 提出。它的优势在于在对一定范围内的整数排序时,它的复杂度为Ο(n+k)(其中k是整数的范围),快于任何比较排序算法。 [1]  当然这是一种牺牲空间换取时间的做法,而且当O(k)>O(n*log(n))的时候其效率反而不如基于比较的排序(基于比较的排序的时间复杂度在理论上的下限是O(n*log(n)), 如归并排序堆排序
维基百科
在计算机科学中,计数排序是一种根据小正整数键对对象集合进行排序的算法; 也就是说,它是一种整数排序算法。 它通过对拥有不同键值的对象数量进行计数,并对这些计数应用前缀和来确定每个键值在输出序列中的位置来进行操作。 它的运行时间与item的数量以及最大key值和最小key值的差值成线性关系,所以它只适合在key的变化不显着大于item数量的情况下直接使用。 它经常用作另一种排序算法基数排序的子例程,可以更有效地处理较大的键。

复述展开

计数排序是一种线性时间的排序算法,必须有确定范围的整数。
需要准备额外的数组存储,其中第i个元素是待排序数组A中值等于i的元素的个数。
计数排序的核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。
时间复杂度:
  • 平均时间复杂度:O(n + k)
  • 最佳时间复杂度:O(n + k)
  • 最差时间复杂度:O(n + k)
  • 空间复杂度:O(n + k)

动图展示

notion image
 

代码实现:

理解体会

计数算法只能使用在已知序列中的元素在0-k之间,且要求排序的复杂度在线性效率上。 Â 计数排序和基数排序很类似,都是非比较型排序算法。但是,它们的核心思想是不同的,基数排序主要是按照进制位对整数进行依次排序,而计数排序主要侧重于对有限范围内对象的统计。基数排序可以采用计数排序来实现。
📌
快速跳转链接
【概念解析】启动
【概念解析】Day 1 - 10
【概念解析】Day 11 - 20
【概念解析】Day 21 - 30
【概念解析】Day 31 - 40
【概念解析】Day 41 - 50
【概念解析】Day 51 - 60
【概念解析】Day 61 - 70
【概念解析】Day 71 - 80
【概念解析】Day 81 - 90
 
上一篇
Day25 【概念解析】 桶排序
下一篇
Day23【概念解析】基数排序

评论
Loading...