c++ - 为什么 std::sort 比手工编码的 "introsort"更快?

标签 c++ c algorithm sorting introsort

我使用快速排序、堆排序实现了介绍排序.. 我的手工编码版本基于 D. Musser 的建议,其中递归深度切换到作为参数传递的堆排序,中值 3 的主元选择。切换到简单插入排序的元素阈值是16。

最佳答案

gcc 和 Microsoft 的 VisualC++ 都提供了 std::sort 的源代码(在头文件算法中)。所以,你可以自己看一下。我之前调查过类似的问题。我的结论是,代码针对通用代码路径进行了优化,甚至达到了使代码变得更加复杂和难以维护的程度。对我来说有意义的权衡。

关于c++ - 为什么 std::sort 比手工编码的 "introsort"更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15082949/

相关文章:

c - cmake 灯丝渲染项目时出错

c++ - 使用按位运算符检查数字是正数还是负数

c++ - 可执行/in) 代码处无法到达的断点

c++ - 处理相似代码的优雅方式

c - 我如何将结构的成员复制到 C 中的 double 组中?

c - 使用 shmat 时从 void* 类型分配 int *[10]

c++ vector 迭代器到函数模板

c++ - 在 OpenCV 的 namedWindow 之前或之后初始化 Tesseract

algorithm - QuickSort在算法征服阶段实现排序?

c# - 为什么 HashSet<T>.IntersectWith 的时间复杂度取决于相等比较器?