Python使用内置sort()
方法的算法是什么?是否可以查看该方法的代码?
答案 0 :(得分:96)
当然!代码here,从函数islt
开始,然后继续QUITE一段时间;-)。正如克里斯的评论所暗示的那样,它是C代码。您还需要阅读this文本文件以获取文本说明,结果等等。
如果您更喜欢阅读Java代码而不是C代码,那么您可以查看Joshua Bloch在Java和Java中实现的timsort(Joshua也是1997年实现了仍在Java中使用的修改后的mergesort的人,可以希望Java将最终切换到他最近的timsort端口。
对timsort的Java端口的一些解释是here,diff是here(指向所有需要的文件的指针),密钥文件是here - FWIW,而我我是一个比Java程序员更好的C程序员,在这种情况下,我发现Joshua的Java代码比Tim的C代码更具可读性; - 。)。
答案 1 :(得分:25)
我只想提供一个非常有用的链接,我错过了Alex的全面答案:A high-level explanation of Python's timsort(带图形可视化!)。
(是的,该算法现在基本上称为Timsort)
答案 2 :(得分:7)
在早期的python版本中,sort函数实现了quicksort的修改版本。 然而,它被认为是不稳定的,从2.3开始,他们转而使用自适应合并算法。
答案 3 :(得分:-2)
我听说timsort是最好的排序算法,因为它可以对两种排序起作用,它有两个优点,一个是恒定率低,另一个是效率更高。 它们是二进制插入排序和合并排序。