麻省理工学院公开课-第四讲:快速排序 及 随机化 算法

http://deepin.iteye.com/blog/1392647

http://www.cnblogs.com/banli/archive/2013/06/02/3113338.html

快速排序

  • 分治思想
  • 原地排序
  • 很实用

分治思想:

  1. 分,选择一个基准元素(pivot),将数组分为两部分,左边是比基准元素小的数,右边是比基准元素大的数(基准元素通常选第一个或最后一个).
  2. 治,递归地对两个数组进行快速排序.

时间复杂度:

  • 最坏的情况: Θ(n2). 原因是选择了最小或最大的元素作为基准元素。
  • 最好的情况:Θ(n lg n).

快速排序与归并排序的比较:

  两者都能达到Θ(n lg n)的时间复杂度,而且归并排序最差也能达到Θ(n lg n). 快速排序最差的时间复杂度为Θ(n2). 但是,在实际使用当中,快速排序通常要比归并排序快3倍左右,而且快排是就低排序,在缓存和虚拟内存中实现较好。

 

算法改进:随机化快速排序

  • 在划分子数组时,随机选择基准元素
  • 划分子数组足够小时,直接采用插入排序
posted @ 2015-06-11 21:45  菜鸟_xf  阅读(183)  评论(0编辑  收藏  举报