我使用快速排序、堆排序实现了介绍排序.. 我的手工编码版本基于 D. Musser 的建议,其中递归深度切换到作为参数传递的堆排序,中值 3 的主元选择。切换到简单插入排序的元素阈值是16。
最佳答案
gcc 和 Microsoft 的 VisualC++ 都提供了 std::sort 的源代码(在头文件算法中)。所以,你可以自己看一下。我之前调查过类似的问题。我的结论是,代码针对通用代码路径进行了优化,甚至达到了使代码变得更加复杂和难以维护的程度。对我来说有意义的权衡。
关于c++ - 为什么 std::sort 比手工编码的 "introsort"更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15082949/