Python 内置的
sort()
方法使用什么算法?可以看一下该方法的代码吗?
当然!代码是 here,从函数
islt
开始,持续了很长一段时间;-)。正如 Chris 的评论所暗示的那样,它是 C 代码。您还需要阅读this文本文件以获取文本解释、结果等。
如果您更喜欢阅读 Java 代码而不是 C 代码,您可以查看 Joshua Bloch 在 Java 中以及针对 Java 的 timsort 实现(Joshua 也是在 1997 年实现了仍在 Java 中使用的修改后的合并排序的人,人们可以希望 Java最终将切换到他最近的 timsort 端口)。
timsort 的 Java 端口的一些解释是 here,差异是here(指向所有需要的文件的指针),关键文件是 here -- FWIW,而我是一个比 Java 更好的 C 程序员程序员,在这种情况下,我发现 Joshua 的 Java 代码总体上比 Tim 的 C 代码更具可读性;-)。
自 python 版本 3.11 起,
sort()
现在使用 powersort 的版本,这是一种利用运行的合并排序算法:数据中已排序值的序列。当长度小于64时,python切换到二进制插入排序。
python实现细节:https://github.com/python/cpython/blob/main/Objects/listsort.txt