mirror of
https://github.com/krahets/hello-algo.git
synced 2026-04-14 02:10:37 +08:00
build
This commit is contained in:
@@ -461,17 +461,11 @@ comments: true
|
||||
|
||||
## 11.4.2. 算法特性
|
||||
|
||||
**平均时间复杂度 $O(n \log n)$** :平均情况下,哨兵划分的递归层数为 $\log n$ ,每层中的总循环数为 $n$ ,总体使用 $O(n \log n)$ 时间。
|
||||
**时间复杂度 $O(n \log n)$** :平均情况下,哨兵划分的递归层数为 $\log n$ ,每层中的总循环数为 $n$ ,总体使用 $O(n \log n)$ 时间。最差情况下,每轮哨兵划分操作都将长度为 $n$ 的数组划分为长度为 $0$ 和 $n - 1$ 的两个子数组,此时递归层数达到 $n$ 层,每层中的循环数为 $n$ ,总体使用 $O(n^2)$ 时间,因此是“非稳定排序”。
|
||||
|
||||
**最差时间复杂度 $O(n^2)$** :最差情况下,哨兵划分操作将长度为 $n$ 的数组划分为长度为 $0$ 和 $n - 1$ 的两个子数组,此时递归层数达到 $n$ 层,每层中的循环数为 $n$ ,总体使用 $O(n^2)$ 时间。
|
||||
**空间复杂度 $O(n)$** :输入数组完全倒序下,达到最差递归深度 $n$ 。由于未借助辅助数组空间,因此是“原地排序”。
|
||||
|
||||
**空间复杂度 $O(n)$** :输入数组完全倒序下,达到最差递归深度 $n$ 。
|
||||
|
||||
**原地排序**:只在递归中使用 $O(\log n)$ 大小的栈帧空间。
|
||||
|
||||
**非稳定排序**:哨兵划分操作可能改变相等元素的相对位置。
|
||||
|
||||
**自适应排序**:最差情况下,时间复杂度劣化至 $O(n^2)$ 。
|
||||
**非稳定排序**:哨兵划分最后一步可能会将基准数交换至相等元素的右边。
|
||||
|
||||
## 11.4.3. 快排为什么快?
|
||||
|
||||
|
||||
Reference in New Issue
Block a user