基数排序和桶/箱排序是自适应的吗?

Posted

技术标签:

【中文标题】基数排序和桶/箱排序是自适应的吗?【英文标题】:Are Radix Sort and Bucket/Bin Sort Adaptive? 【发布时间】:2020-08-21 05:45:57 【问题描述】:

密切相关的排序算法基数排序和桶排序是自适应的吗?

我知道,如果要排序的数据是预先排序的并且算法花费的时间最短,则称排序算法是自适应的。

但是我无法断定 Radix 和 Bucket 排序算法是否具有自适应性。

【问题讨论】:

我不这么认为。从理论上讲,无论输入是否排序,它们都会付出相同的努力。 对于比缓存大得多的大型数组,运行时间的很大一部分是随机访问写入。如果数据已经排序或接近排序,这些随机访问写入将变为顺序,这将减少运行时间。虽然减少了运行时间,但我认为这不符合适应性。 【参考方案1】:

如果排序算法利用其输入中的现有顺序,则它属于自适应排序家族。

例如,“插入排序”是一种自适应排序算法,如果输入已经排序,则时间复杂度为 O(n)。

在“桶排序(或 Bin 排序)”和“基数排序”的情况下,输入顺序没有优势。时间复杂度不会因输入顺序而异。这就是为什么它们不是自适应排序算法。

注意:要了解排序算法是否属于自适应排序家族,您必须考虑实现方法,通过该方法可以根据输入顺序优化时间复杂度。自适应排序通常是通过修改现有的排序算法来实现的。

希望,它会有所帮助!

资源:

Adaptive Sort details from Wikipedia

Adaptive and Non-Adaptive Sorting Algorithm

【讨论】:

以上是关于基数排序和桶/箱排序是自适应的吗?的主要内容,如果未能解决你的问题,请参考以下文章

动画 | 什么是基数排序?

算法渣-排序-基数排序

动画 | 什么是基数排序?

八大基本排序--基数排序

基数排序 vs 计数排序 vs 桶排序。有啥不同?

算法:排序之桶排序和基数排序