2025-07-15 · algorithms
排序基准测试:用数据说话
补齐可直接执行的 benchmark 代码后,在当前环境重跑 12 种排序算法,并用真实 CSV 数据重画图表。

























如果你是第一次来到这组排序文章,不建议按发布时间乱翻。排序问题的关键从来不是“哪种算法理论上更强”,而是:你的数据是什么分布、稳定性要不要、数据是否装得进内存、瓶颈在 CPU 还是 I/O、单线程还是多核。
这页的目标不是重复每篇文章的全部内容,而是把它们串成一条清晰的阅读路径。
如果你只想先读一篇,再决定要不要继续往下看,按这个顺序选:
| 你的问题 | 最先看哪篇 | 为什么 |
|---|---|---|
| 为什么标准库默认排序不直接用快排? | TimSort | 默认排序首先服务真实数据,而不是随机输入下的教科书模型 |
| 不要求稳定性,通用场景谁最强? | pdqsort | 它代表了现代不稳定默认排序的主流工程答案 |
| O(n) 排序到底什么时候真能赢? | 基数排序 | 关键在键类型、缓存、位宽和常数因子 |
| 数据已经大到内存装不下怎么办? | 外部排序 | 此时核心矛盾从 CPU 变成磁盘与归并策略 |
| 多核或 GPU 值不值得上? | 并行排序 | 并行化会带来新的同步、分片和负载均衡问题 |
| 我只想看实测,不想先看理论 | 排序基准测试 | 统一基准能快速告诉你不同数据分布下的现实表现 |
把当前热点继续串成多页阅读,而不是停在单篇消费。
2025-07-15 · algorithms
补齐可直接执行的 benchmark 代码后,在当前环境重跑 12 种排序算法,并用真实 CSV 数据重画图表。
2025-07-15 · algorithms
比较排序有 O(n log n) 的理论下界,基数排序如何绕过这个限制?它在什么场景下真正有优势,又为什么没有成为通用排序的首选?
2025-07-15 · algorithms
为什么 Python 和 Java 不约而同选择了同一个排序算法?TimSort 对真实数据的哪些特征做了针对性优化,使它在工程实践中击败了教科书算法?
2025-07-15 · algorithms
Rust 的 sort_unstable 和 C++ Boost.Sort 背后的 pdqsort 如何做到在几乎所有数据分布上都表现优异?模式自适应意味着什么?
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。