基数排序和桶/箱排序是自适应的吗?
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
【讨论】:
以上是关于基数排序和桶/箱排序是自适应的吗?的主要内容,如果未能解决你的问题,请参考以下文章