为什么主流语言的sort函数都选择了Timsort
1959年,Tony Hoare发明了快速排序。这个算法在教科书中被奉为圭臬,平均时间复杂度$O(n \log n)$,原地排序,缓存友好,几乎完美。然而,六十多年后的今天,当你调用Python的list.sort()、Java的Arrays.sort()或Rust的稳定排序时,底层运行的却是一个叫Timsort的算法。 ...
1959年,Tony Hoare发明了快速排序。这个算法在教科书中被奉为圭臬,平均时间复杂度$O(n \log n)$,原地排序,缓存友好,几乎完美。然而,六十多年后的今天,当你调用Python的list.sort()、Java的Arrays.sort()或Rust的稳定排序时,底层运行的却是一个叫Timsort的算法。 ...
2007年9月,Python创始人Guido van Rossum在一篇博客文章中写下了一段被无数次引用的话: “我会欢迎移除GIL的补丁——但前提是单线程程序的性能不能下降。” ...
1964年,Peter Landin在一篇题为《The Mechanical Evaluation of Expressions》的论文中首次提出了"闭包"(closure)的概念。他将闭包定义为一个包含λ表达式及其相关环境的"信息束"。六十年后,这个概念几乎出现在所有现代编程语言中——JavaScript、Python、Rust、Go、Swift、C++、Java——但每种语言的实现方式却大相径庭。 ...