LeetCode:912. Sort an Array

思路

 快速排序

快速排序和歸併排序都是分支思想來進行排序的算法, 並且二者都非常流行。 快速排序的核心點在於選擇 元素。

每次我們將數組分成兩部分,一部分是比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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章