标签:
提前话:快速排序是对分治思想很好的运用,理解好了快排,也就对分治有了更好的了解、
分治思想:
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