python 三行程式碼實現快速排序
阿新 • • 發佈:2018-10-31
python 三行程式碼實現快速排序
最近在看 python cookbook , 裡面的例子很精彩,這裡就幫過來,做個備忘錄
主要利用了行數的遞迴呼叫和Python的切片特性,解釋一下每行程式碼的含義:
- 第1行: #coding:utf-8 指定utf-8 編碼
- 第2行:定義函式名和引數
- 第3行: 判斷列表長度是否小於等於1, 如果小於等於1,直接返回列表
- 第4行:返回遞迴函式拼接的列表,[lt for lt in L[1:] if lt <= L[0]] 列表推導表示式,返回一個比 L[0] 小的列表,[ge for ge in L[1:] if ge >= L[0]], 返回一個比L[0] 大的列表, 再加上L[0] 就構成完整的列表
第四行是最關鍵的,返回三個部分:
- 比列表第一個元素小的所有元素列表遞迴呼叫
- 第一個元素
- 比列表第一個元素大的所有元素列表遞迴呼叫
遞迴呼叫部分,處理過程都是一樣的,用列表第一個引數作為中間值,把列表分為兩部分
最後兩行是測試程式碼,生成一個無序列表,列印排序結果。
#coding:utf-8
def qsort(L):
if len(L) <= 1: return L
return qsort([lt for lt in L[1:] if lt < L[0]]) + L[0:1]+ \
qsort([ge for ge in L[1:] if ge >= L[0]])
iList = [3,14,2,12,9,33,99,35]
print qsort(iList)