2012-06-08 36 views
27

可能重複:
About python's built in sort() methodpython的排序()使用什麼算法?

名字說明了一切。

我試圖向某人解釋爲什麼他們應該使用Python的內置sorted()函數而不是滾動自己,並且我意識到我不知道它使用了什麼算法。

如果它的事項,我們正在談論的Python 2.7

+4

http://stackoverflow.com/questions/1517347/about-pythons-built-in-sort-method問題已經在這裏找到答案。它使用Timsort – Aharpe

+0

對於其他誰是好奇,這篇文章是偉大的:http://corte.si//posts/code/timsort/index.html –

回答

63

Python使用所謂Timsort的算法:

Timsort是一種混合排序算法,從合併排序和 插入排序得出,設計用於執行以及許多真實世界的數據。它是由Tim Peters於2002年發明的,用於編程語言Python 。該算法找到已經排序的數據的子集,並使用子集高效地對數據進行排序。這是通過將已識別的子集(稱爲 運行)與現有運行合併,直到滿足某些標準來完成的。從2.3版開始,Timsort 一直是Python的標準排序算法。現在還用於在Java SE 7和Android 平臺上對數組進行排序。

+5

這是一個非常令人印象深刻的算法:OP的朋友將非常困難自己開發一些更好的東西。 –

+10

它不僅使用了非常聰明的算法,而且還實現了它在手工優化的C中。即使您自己通過將僞代碼轉換爲Python來實現它,它的速度會慢一些,而且會消耗更多內存。 – delnan

+1

一篇有趣的論文說,它在TimSort中發現了一個bug(併爲其提供了修復):http://envisage-project.eu/proving-android-java-and-python-sorting-algorithm-is-broken-and如何修復它/ – bgporter

相關問題