思路
快速排序
快速排序和归并排序都是分支思想来进行排序的算法, 并且二者都非常流行。 快速排序的核心点在于选择 轴 元素。
每次我们将数组分成两部分,一部分是比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)