思路
快速排序
快速排序和歸併排序都是分支思想來進行排序的算法, 並且二者都非常流行。 快速排序的核心點在於選擇 軸 元素。
每次我們將數組分成兩部分,一部分是比pivot(軸元素)大的,另一部分是不比pivot大的。 我們不斷重複這個過程, 直到問題的規模縮小的尋常(即只有一個元素的情況)。
快排的核心點在於如何選擇軸元素,一般而言,選擇軸元素有三種策略:
- 數組最左邊的元素
- 數組最右邊的元素
- 數組中間的元素
- 數組隨機一項元素
-
def quicksort(self, nums): if len(nums) <= 1: return nums pivot = random.choice(nums) lt = [v for v in nums if v < pivot] eq = [v for v in nums if v == pivot] gt = [v for v in nums if v > pivot] return self.quicksort(lt) + eq + self.quicksort(gt)