blqsort:比 std::sort 更快的 C++ 快速排序
A C++ Quicksort Faster Than std:sort
我开发了一个名为 blqsort 的 C++ 快速排序算法,在随机数据上的表现超越了 std::sort。通过采用无分支分区、针对小分区的排序网络以及优化的枢轴选择策略,该算法在 Apple M1 和 Intel i5 平台上均实现了显著的性能提升。基准测试显示,在处理 5000 万个随机 double 类型数据时,blqsort 的执行时间仅为 std::sort 的一半左右。即使在部分有序或包含大量重复键的复杂场景下,它依然保持高效。代码已开源在 GitHub 上,包含单线程和多线程版本,旨在为开发者提供更极致的排序性能。
当 if 语句拖慢你的速度时,避开它就是关键。
- omoikane
之前的讨论:
https://news.ycombinator.com/item?id=48375445 - Branchless Quicksort faster than std:sort and pdqsort with C and C++ API (2026-06-02, 82 comments)
- brudgers
Quicksort 之所以快,是因为它的空间需求不仅是线性的,而且非常非常接近 n。它之所以快,是因为它最大限度地减少了 IO。
说清楚一点,我没看代码,但对比 5000 万条数据的基准测试让我怀疑,实现极小 IO 是必须的。
当然,有时候这确实就是你的应用场景。但对于许多规模适中的有趣问题来说,IO 才是主导因素。