本文的图都来自《算法图解》
分治
分治 D&C —— divide and conquer
基线条件 —— 最简单的情况
递归过程为判断基线条件,每次递归向基线条件靠拢。
编写涉及数组的递归函数时,基线条件通常是数组为空或只包含一个元素。陷入困境时,请检查基线条件是不是这样的。
快排 quick sort
快排是一种分治算法
快排思想
需要对下列数组进行排序

选择一个数作为pivot,这里选了3,把<=pivot的数排在pivot左
把>pivot的数排在pivot右,接下来对左右两部分递归调用函数进行快排。。。整个数组就排好了。

我们也可以选择5作为pivot如下

qsort简单实现
我们取每个数组的第一个元素作为pivot
from typing import List
def qsort(array: List[int]) ->List[int]:
if len(array

本文详细介绍了快速排序算法,包括其分治思想、基本实现原理及步骤,并通过实例展示如何选取基准值进行分区,同时探讨了快排的时间复杂度,以及如何通过随机化改进算法。
3608

被折叠的 条评论
为什么被折叠?



