码迷,mamicode.com
首页 > 编程语言 > 详细

快速排序分析

时间:2015-03-11 23:13:11      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:

提前话:快速排序是对分治思想很好的运用,理解好了快排,也就对分治有了更好的了解、 

 

分治思想:

          1.分治是个很好的东西,这种思想可以化大为小,化复杂为简单,因此如果能通过快排理解分治,那思维一定会得到很好的锻炼的。

          2.在求解一个输入规模为n,而n的取值又很大的问题时,直接求解往往非常困难。这时,可以先分析问题本身所具有的某些特性,然后从这些特性出发,选择某些适当的设计策略来求解。这种方法,就是所谓的分治法(摘自网络)

          3.适用分治法的适合条件(摘自网络)            

                   采用分治法解决的问题一般具有的特征如下:
                         (1) 问题的规模缩小到一定的规模就可以较容易地解决。
                         (2) 问题可以分解为若干个规模较小的模式相同的子问题,即该问题具有最优子结构性质。
                         (3) 合并问题分解出的子问题的解可以得到问题的解。
                         (4)问题所分解出的各个子问题之间是独立的,即子问题之间不存在公共的子问题。
           4.设计步骤(摘自网络)                     
                         (1)划分步:把输入的问题划分为k个子问题,并尽量使这k个子问题的规模大致相同。
                         (2) 治理步:当问题的规模大于某个预定的阈值n0时,治理步由k个递归调用组成。
                         (3)组合步:组合步把各个子问题的解组合起来,它对分治算法的实际性能至关重要,算法的有效性很大地依赖于组合步的实现。
分治法的关键是算法的组合步。究竟应该怎样合并,目前没有统一的模式,因此需要对具体问题进行具体分析,以得出比较好的合并算法。
 
快速排序:快速排序是对冒泡排序的一种优化。
           
           1.由于与文学太差了,政治也没有学过。所以不会总结,快排有不好解释,直接上例子,意会吧!孩纸!
           1.1 还是简单解释下吧,快排的每一次操作,相当于是给第temp个元素找到位置,让其归位,并且让小于该元素的元素排在它的前面,其他的排在其后。
           2.data是待排序的元素,temp表示正在给第temp个元素找位置,left表示左边的元素的脚标,right表示邮右边的元素的脚标,便于遍历。
           3.请结合自己搜集的资料和我在上面勉强拼凑的话,看下面的例子,好好体会:
           
                 data={9,8,4,7,5,2,12};
            
                技术分享
                                                            技术分享技术分享
            
              技术分享
                                                           技术分享技术分享
              技术分享
 
                                                      技术分享技术分享
                                                   技术分享
 
Ps:自己的图太丑了,来张网上的
                      技术分享-
 
 
                                                  
参考文献:百度百科(http://baike.baidu.com/view/1632517.htm)

 

快速排序分析

标签:

原文地址:http://www.cnblogs.com/yanglingwell/p/4331131.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!