这让我困惑了一段时间。我想知道应该使用桶式排序的场景 过度计数(或反之亦然)。
答案 0 :(得分:1)
这两个页面提供了两种排序的一些信息。
关于计算排序:
因为计数排序使用键值作为数组的索引,所以它是 不是比较排序,Ω(n log n)下限用于比较 排序不适用于它。1存储桶排序可用于许多 与计数排序相同的任务,具有类似的时间分析; 但是,与计数排序相比,桶排序需要链表, 动态数组或大量预先分配的内存来保存 每个桶中的项目集,而计数排序而不是存储 每桶的单个数字(项目数)。[4]
关于水桶分类:
铲斗排序可以看作是计数排序的概括;事实上, 如果每个桶的大小为1,则桶排序退化为计数 分类。铲斗排序的可变铲斗大小允许它使用O(n) 内存而不是O(M)内存,其中M是不同的数量 值;作为交换,它放弃了计数排序的O(n + M)最坏情况 行为。