Python中的内置sort()
方法使用什么算法?是否可以查看该方法的代码?
问问题
69814 次
3 回答
141
当然!代码在这里,从函数开始,islt
持续了一段时间;-)。正如克里斯的评论所暗示的,它是 C 代码。您还需要阅读此文本文件以获取文本解释、结果等。
如果你更喜欢阅读 Java 代码而不是 C 代码,你可以看看 Joshua Bloch 的 timsort in and for Java 实现(Joshua 也是在 1997 年实现了仍然在 Java 中使用的修改后的归并排序的人,人们可以希望 Java 会最终切换到他最近的 timsort 端口)。
对 timsort 的 Java 端口的一些解释在这里,差异在这里(带有指向所有需要的文件的指针),关键文件在这里——FWIW,而我是一个比 Java 程序员更好的 C 程序员,在这种情况下我发现Joshua 的 Java 代码总体上比 Tim 的 C 代码更具可读性;-)。
于 2009-10-04T20:53:10.383 回答
40
我只是想提供一个非常有用的链接,我在 Alex 的其他综合答案中错过了这个链接:Python 的 timsort 的高级解释(带有图形可视化!)。
(是的,该算法现在基本上称为Timsort)
于 2009-10-04T23:03:41.827 回答
10
在早期的 python 版本中,排序函数实现了快速排序的修改版本。然而,它被认为是不稳定的,从 2.3 开始,他们转而使用自适应归并排序算法。
于 2009-10-04T20:52:09.140 回答