当前位置:   article > 正文

分治策略----快速排序_分治策略-快速排序

分治策略-快速排序

快速排序算法是基于分治策略的另一个排序算法。其基本思想是:对输入的子数组a[p:r],按以下三个步骤进行排序。

 (1) 分解(Divide):以a[p]为基准元素将a[p:r]划分成3段a[p:q-1],a[q]和a[q+1:r],使得a[p:q-1]中任何一个元素小于等于a[q],而a[q+1:r]中任何一个元素大于等于a[q]。下标q在划分过程中确定。

(2) 递归求解(Conquer):通过递归调用快速排序算法分别对a[p:q-1]和a[q+1:r]进行排序。

(3) 合并(Merge):由于对a[p:q-1]和a[q+1:r]的排序是就地进行,所以在a[p:q-1]和a[q+1:r]都已排好的序后,不需要执行任何计算,a[p:r]就已排好序。

 

   

 

快速排序的运行时间与划分是否对称有关,其最坏情况发生在划分过程产生的两个区域分别包含n-1个元素和1个元素的时候。T(n) = T(n-1)+0(n) n>1;T(n) = 0(1)   n<=1;

 

 T(n)=O(n2) ;

  最好情况下,每次划分所取的基准都恰好为中值,即每次划分都产生两个大小为n/2的区域。

T(n) = O(1)  n<=1; T(n) = 2T(n/2) + O(n)   n>1

T(n) = O(nlogn)。

 

可证:快排在平均情况下的时间复杂度也是O(nlogn)。

 

采用随机策略的快速排序算法,在快速排序算法的每一步中,当数组还没有被划分时,可以再a[p;r]中随机选出一个元素作为划分基准.

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/842844
推荐阅读
相关标签
  

闽ICP备14008679号