python2 7的sort函式預設採用什麼排序演算法,適用於怎樣的數列的排序?

時間 2021-05-29 23:39:48

1樓:挖礦老司機

python中的sorted排序,真的是高大上,用的Timsort演算法。

什麼是Timsort,請看 wiki的解釋:http://en.wikipedia.org/wiki/Timsort

另外,國內有乙個文件,適當翻譯:Timsort原理介紹 - Data Analytics - 部落格頻道 - CSDN.NET,

這裡擷取乙個不同排序演算法比較的圖示,就明白sorted的威力了。從時間複雜度來看,Timsort是威武的。

從空間複雜度來講,需要的開銷在數量大的時候會增大。

綜上,可以看出,就一般情況,使用sorted足以能夠完成排序的要求,並且是穩定的。

當然,python中也有其它一些排序模組,都可以直接拿過來使用。

FROM: qiwsir/algorithm

2樓:李志闖

引用自http://

@曹曉山

最近也在學習python,推薦《Python基礎教程》,雖然我只看了這本書……其中第二版40頁也詳細說明了高階排序的內容,使用的就是sort函式,當然下面的回答也是非常全面的。剛剛發現這是我的知乎首答,真是社會敗類啊,默默在知乎上混了好幾年……

Python中的sort()函式是序列的內部函式,函式原型:

L.sort(cmp=None, key=None, reverse=False)

函式作用:它是把L原地排序,也就是使用後並不是返回乙個有序的序列副本,而是把當前序列變得有序。

Python中sort()引數說明:

(1) cmp引數

cmp接受乙個函式,拿整形舉例,形式為:

def f(a,b):

return a-b

如果排序的元素是其他型別的,如果a邏輯小於b,函式返回負數;a邏輯等於b,函式返回0;a邏輯大於b,函式返回正數就行了。

(2) key引數

key也是接受乙個函式,不同的是,這個函式只接受乙個元素,形式如下:

def f(a):

return len(a)

key接受的函式返回值,表示此元素的權值,sort將按照權值大小進行排序

(3) reverse引數

接受False 或者True 表示是否逆序

Python中sort()函式舉例:

(1)按照元素長度排序

L = [,,,]

def f(x):

return len(x)

sort(key=f)

print L

//輸出:

//[, , , ]

(2)按照每個字典元素裡面key為1的元素的值排序

L = [,,,]

def f2(a,b):

return a[1]-b[1]

L.sort(cmp=f2)

print L

//輸出:

//[, , , ]

Python2 7 安裝tensorflow gpu後,import tensorflow出錯?

習慣丶不習慣 首先可以在Pycharm裡面的setting 中看一下自己python版本以及已經安裝後的包,tensorflow gpu 需要安裝對應的CUDA和CUDNN,對於乙個重灌系統好多次的人來說,cuda和cudnn版本的很重要!兩個彼此要對應,而且也要符合python2.7的版本。PS ...

零基礎學習Python,用python2 7還是用python3

JWTbaby 零基礎學習python當然要是用python3了呀,孩子。目前市面上的公司都已經將python2過渡到python3了,python2的最後乙個版本是python2.17,已經停止維護了。而且python3中解決了或者優化了很多python2的問題,比如字典的keys values ...

Python2 7 中文字元編碼,使用Unicode時,選擇什麼編碼格式?

小頭 這個問題可以參考我的另乙個回答,python 中文亂碼出現,不知道是什麼原因?小頭的回答 在Python2中,str型別資料的編碼格式取決於具體環境,在cmd輸入 漢字 時,實際上是以cp936編碼的,因此這裡使用 unicode 漢字 gb2312 把它轉換成unicode型別 gbk相容g...