27 lines
949 B
Markdown
27 lines
949 B
Markdown
QuickSort总结
|
||
============
|
||
|
||
## 关于轴点
|
||
|
||
在原始序列中,轴点未必存在。根据轴点的定义,轴点的必要条件是轴点必然是已经就位的点。所以,在有序序列中,所有元素皆为轴点。这样,快速排序的本质,其实就是将所有元素逐个转换成轴点的过程。
|
||
|
||
## QuickSort基本思路
|
||
|
||
+ 分而治之的策略,类似于Mergesort
|
||
+ 但是与Mergesort不同的是,Quicksort是在划分的时候做文章,主要操作是划分partition操作;而Mergesort划分的时候直接简单划分,主要操作是合并merge操作。
|
||
+ 递归实现
|
||
|
||
## 轴点的构造
|
||
|
||
+ 简单取第一个元素
|
||
+ 随机选取
|
||
+ 三者取中法
|
||
|
||
## 划分的策略
|
||
|
||
+ 版本一:难以应对退化的情形
|
||
+ 版本二:可以处理退化,但是稳定性更差
|
||
+ 版本三:稳定性更好,但是仍然是不稳定的算法。不能应对退化情形
|
||
|
||
## 平均情况下时间复杂度的证明
|