一行語句實現快排

忽然想起來前段時間看《算法圖解》的時候get到的新知識——快排,固然這個知識應該不會有程序員不知道吧?書裏給出的python代碼很是的簡潔,因而我利用Python的特性,進一步簡化改寫,最終給出了一個一行完成的快排實現,以下:python

def qsort(array):  
    return array if len(array)<2 else qsort([x for x in array[1:] if x < array[0]]) + [array[0]] + qsort([x for x in array[1:] if x >= array[0]])

簡單講解一下思路:
若是 array 只有 0 個或者 1 個元素,那麼直接返回,不然遞歸返回三個 list 的拼接:
第一個 list 爲小於 array[0] 的元素,第二個數組爲 array[0] 自己,第三個數組爲大於array[0]的元素,這即爲快排的基本思想。固然選擇 list 的第一個元素做爲基準並不是爲快排的最優策略,不過也是一種比較常見的辦法。程序員

相關文章
相關標籤/搜索