The 4th revision (#1060)

This commit is contained in:
Yudong Jin
2024-01-23 22:08:53 +08:00
committed by GitHub
parent dbb2c07cb1
commit 504c6b0568
3 changed files with 5 additions and 6 deletions

View File

@ -75,7 +75,7 @@
## 基准数优化
**快速排序在某些输入下的时间效率可能降低**。举一个极端例子,假设输入数组是完全倒序的,由于我们选择最左端元素作为基准数,那么在哨兵划分完成后,基准数被交换至数组最右端,导致左子数组长度为 $n - 1$、右子数组长度为 $0$ 。如此递归下去,每轮哨兵划分后的右子数组长度为 $0$ ,分治策略失效,快速排序退化为“冒泡排序”。
**快速排序在某些输入下的时间效率可能降低**。举一个极端例子,假设输入数组是完全倒序的,由于我们选择最左端元素作为基准数,那么在哨兵划分完成后,基准数被交换至数组最右端,导致左子数组长度为 $n - 1$、右子数组长度为 $0$ 。如此递归下去,每轮哨兵划分后都有一个子数组长度为 $0$ ,分治策略失效,快速排序退化为“冒泡排序”的近似形式
为了尽量避免这种情况发生,**我们可以优化哨兵划分中的基准数的选取策略**。例如,我们可以随机选取一个元素作为基准数。然而,如果运气不佳,每次都选到不理想的基准数,效率仍然不尽如人意。