【发布时间】:2018-05-06 11:44:43
【问题描述】:
计数排序具有时间复杂度:O(n+k) n-> 输入的大小 k-> abs。差异。 b/w 最小值和最大值。在某些情况下,计数排序优于基于比较的排序算法 它是否存在于 std: 在 STL 中排序?如果没有,有什么原因吗? 还有 STL 中可用的计数排序功能吗?
【问题讨论】:
-
原则上,没有什么能阻止
std::sort实现检测有利于计数排序的(相当狭窄和专门的)条件,并使用它而不是通用排序算法。我不知道实际上有任何实现。如果我不得不猜测原因,我会怀疑这不值得麻烦 - 计数排序适用的情况在实践中很少见。如果您知道您的算法会从中受益,请随意实现它或查找现有的第三方实现。 -
我可以确认它不存在于 Visual Studio 的 std::sort() 实现中,它是 introsort 的变体。
标签: sorting stl counting-sort