Java 分治策略 快速排序
2017-03-20 本文已影响0人
察克尼_柒
快速排序:基于分治策略的 另一种排序算法。
总体思想:把一组数据,从中间分成两半;左边一半,从左往右,依次把小数移到左端;右边一半,从右往左,依次把大数移到右端。
1、编码步骤:
分解、递归求解、合并。
分解:以 数组 a[ p ] 为基准元素将 a[ p,r ] 划分成三段,a[ p,q-1 ],a[ q ],a[ q+1,r ];此三段元素满足【小】<【中】<【大】。(即将数组a分为3个子集)
递归求解:通过递归调用快速排序算法,分别对上面三段进行排序。
合并:由于 a[ p,q-1 ] 和 a[ q+1,r ] 的排序是就地进行的,所以在子集合排好序后,数组a的数据即已排好。
2、代码实现:




运行结果:
