麻省理工学院公开课-第四讲:快速排序 及 随机化 算法
http://deepin.iteye.com/blog/1392647
http://www.cnblogs.com/banli/archive/2013/06/02/3113338.html
快速排序
- 分治思想
- 原地排序
- 很实用
分治思想:
- 分,选择一个基准元素(pivot),将数组分为两部分,左边是比基准元素小的数,右边是比基准元素大的数(基准元素通常选第一个或最后一个).
- 治,递归地对两个数组进行快速排序.
时间复杂度:
- 最坏的情况: Θ(n2). 原因是选择了最小或最大的元素作为基准元素。
- 最好的情况:Θ(n lg n).
快速排序与归并排序的比较:
两者都能达到Θ(n lg n)的时间复杂度,而且归并排序最差也能达到Θ(n lg n). 快速排序最差的时间复杂度为Θ(n2). 但是,在实际使用当中,快速排序通常要比归并排序快3倍左右,而且快排是就低排序,在缓存和虚拟内存中实现较好。
算法改进:随机化快速排序
- 在划分子数组时,随机选择基准元素
- 划分子数组足够小时,直接采用插入排序