python 快速排序 遞歸切片法

主要利用了行數的遞歸調用和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)

轉載:https://blog.csdn.net/Jasonliujintao/article/details/77862705

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章