前些天在 Bilibili 上看到一个视频(6 分钟演示 15 种排序算法)。好事者戏称:「在视频中,你能听到:冒泡咕噜声、飞机坠地声、暖瓶灌水声、猴子乱叫声等等」,实在搞笑得很。
C++ 的标准模板库有一个很霸气的解读:「标准模板库里的任意算法、数据结构,你找不到一个实现,在所有的情况下都优于标准模板库的实现;否则,它就应该进入标准模板库」。因此,对于排序问题来说,C++ 里的标准模板库中的 std::sort
可想而知是一个在绝大多数情况下都能达到极限性能的排序算法。
前文介绍的内省式排序算法正是 std::sort
采用的算法。但仅有一个理论上优秀的算法是不够的,std::sort
在内部也有很多技巧和权衡值得细细品味。这篇文章尝试来剖析 std::sort
。