1. 程式人生 > >python 三行程式碼實現快速排序

python 三行程式碼實現快速排序

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] 就構成完整的列表

第四行是最關鍵的,返回三個部分:

  1. 比列表第一個元素小的所有元素列表遞迴呼叫
  2. 第一個元素
  3. 比列表第一個元素大的所有元素列表遞迴呼叫

遞迴呼叫部分,處理過程都是一樣的,用列表第一個引數作為中間值,把列表分為兩部分

最後兩行是測試程式碼,生成一個無序列表,列印排序結果。

#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)