Python内置的sort()方法使用什么算法?

问题描述 投票:0回答:3

Python 内置的

sort()
方法使用什么算法?可以看一下该方法的代码吗?

python algorithm sorting python-internals
3个回答
147
投票

当然!代码是 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 代码更具可读性;-)。


11
投票

在Python的早期版本中,

sort
函数实现了快速排序的修改版本。然而,在 2.3 中,这被自适应归并排序算法取代,以便默认提供稳定排序。


0
投票

自 python 版本 3.11 起,

sort()
现在使用 powersort 的版本,这是一种利用运行的合并排序算法:数据中已排序值的序列。当长度小于64时,python切换到二进制插入排序。

python实现细节:https://github.com/python/cpython/blob/main/Objects/listsort.txt

© www.soinside.com 2019 - 2024. All rights reserved.