1. 程式人生 > >python簡潔程式碼實現快速排序

python簡潔程式碼實現快速排序

**快速排序 最優時間複雜度為nlogn,因為要完成n個巢狀呼叫,,但比氣泡排序要快
python實現邏輯過程是這樣得。
1.設定兩個遊標 left跟right
2.設定基準值,網上有方案設定中間數為基準值,但計算比較麻煩,而且並不一定高效,這裡設定列表最右的那個元素為基準值,
3.left遊標 從左向右移動,當遊標指向元素大於基準值時,停下,交換right遊標指向的元素
4 同理 right右標向左移動
5 當左右遊標相等時停止迴圈,賦值基準值給左遊標指向的元素
6 對基準值左邊的元素遞迴,重複以上步驟,
7 設定條件退出遞迴。
下面是程式碼實現

alist= [22
,21,34,65,12,89,3,9,66] def qucik_sort(alist,low, high): # 退出遞迴條件 # left=right while low>high: return alist left = low right = high base_value = alist[right] while left < right: while left<right and alist[left] < base_value: left
+= 1 # 跳出迴圈條件 # alist[left]>=base_value alist[right]=alist[left] while right>left and alist[right]>base_value: right -= 1 # 跳出迴圈條件 # alist[right]<=base_value alist[left]=alist[right] # 把基準值賦值給遊標停留的元素 alist[right
] = base_value qucik_sort(alist,low,left-1) qucik_sort(alist,left+1,len(alist)-1) print(alist) if __name__ == '__main__': low = 0 high = len(alist)-1 qucik_sort(alist,low,high)

輸出結果為 [3, 9, 12, 21, 22, 34, 65, 66, 89]

簡潔的程式碼 ,很pythonic.