java分治排序算法_实用算法的分析与程序设计——分治算法(归并排序,快速排序)...

归并排序的核心:两个有序子列的归并 (图片来自 中国大学MOOC《数据结构》) 如上所示,假如我们已经有了这样两个有序的子序列,首先要做的就是把这两个子列合并。为此,可以开另外一个数组,然后把这几个数字按照一定次序放进去,保证最后那个数组是从小到

有许多算法在结构上是递归的:为了解决一个给定问题,算法要一次或多次地调用其自身来解决相关的子问题。这些算法通常采用分治策略:将原问题分成n个规模较小而结构与原问题相似的子问题。递归地解这些子问题,然后合并其结果就得到原问题的解。N=2时的分治法又称二分法。

用分治法求解一个问题,所需的时间是由子问题的个数,大小以及把这个问题分解为子问题所需的工作总量来确定的。一般来说,二分法(即把任意大小的问题尽可能的等分为两个子问题)较为有效。

分治法在每一层递归上都有三个步骤:

分解:将原问题分解成一系列子问题;

解决:递归的解各子问题。若子问题足够小,则直接解

合并:将子问题的结果合并成原问题的解;import java.util.Arrays;public class MergeSort {private final static int MAX_VALUE = 1000;private final static int LENGTH = 100000; public static void main(String[] args) {int[] A = new int[LENGTH];//产生随机序列randomI

分治算法实例

快速排序

设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它前面࿰

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值