思想是:在數組中選定一個數作爲基準,這裏選擇第一個元素,遍歷數組,將>=基準的放到數組右邊(因爲選擇第一個元素作爲基準如還有相等元素,必定在基準元素右側),反之左邊,之後再對基準左右兩邊的數組做相同操作,那麼遞歸停止條件是當數組只剩下一個元素或者爲空時。
def quickSort(arr):
if len(arr)<=1:
return arr
base=arr[0]
left=[i for i in arr[1:] if i<base]
right=[i for i in arr[1:] if i>=base]
return quickSort(left)+[arr[0]]+quickSort(right)
用lambda實現
quick_sort=lambda arr:arr if len(arr)<=1 else quick_sort([i for i in arr[1:] if i<arr[0]])+[arr[0]]+quick_sort([i for i in arr[1:] if i>=arr[0]])
arr=quick_sort(arr)