python中的排序算法_Python中的排序算法——Timsort

突然对Python中list对象的sort函数比较好奇,想知道它用的是什么算法。正好最近我也在复习算法,于是就随便把Python的sort也研究一下吧。刚开始我猜想可能用是快速排序之类的,最后看了 Python的源代码之后发现其实用的是一个适应性强的、稳定的、自然的归并算法,名为timsort。

Timsort是一种混合的算法,它派生自归并排序和插入排序。它是2002年由Tim Peters为Python语言发明的。

Timsort的时间复杂度最好情况为O(n),平均情况为O(nlogn),最差情况为O(nlogn);空间复杂度为O(n)。

更多关于Timsort的信息: http://en.wikipedia.org/wiki/Timsort

在《Python Cookbook(第2版)中文版》这本书的第5章中由Tim Peters介绍了Python排序算法发展简史。其中说到Timsort算法的实现包括了大约1200行C程序,而且大概有一半是在实现一个技术上的技巧。可见该算法还是很复杂的。

在Python源代码目录下有Objects/listsort.txt这个文件,这是Tim Peters写的一个详细的文档。

有个项目致力于用纯C来实现Timsort算法,如Tim所言代码量超过了1200行。http://code.google.com/p/timsort/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值