分治算法:谈一谈大规模计算框架MapReduce中的分治思想

分治算法:谈一谈大规模计算框架MapReduce中的分治思想

MapReduce是Google大数据处理的三驾马车之一,另外两个是GFS和Bigtable

理解分治算法:

将原问题划分成n个规模较小,并且结构与原问题相似的子问题,递归的解决这些子问题,然后再合并其结果得到原问题的解

分治算法是一种处理问题的思想,递归是一种编程技巧,分治算法的递归实现中,每一层递归都会涉及这样三个操作:

  • 分解:将原问题分解成一系列子问题
  • 解决:递归解决各个子问题,若子问题足够小,直接求解
  • 合并:将子问题的结果合并成原问题

分治算法应用举例分析

用有序度表示一组 数据的有序程度,逆序度表示一组数据的无序程度。

假设我们有n个数据,期望数据从小到大排列,那么完全有序的数据的有序度就是n(n-1)/2,逆序度是0,相反,倒序排列的数据的有序度是0,逆序度是n(n-1)/2

2,4,3,1,5,6 逆序对个数:4

(2,1) (4,3) (4.1) (3,1)

如何编程求出一组数据的有序对个数或者逆序对个数?

套用分治算法思想求数组A的逆序对个数,将数组分成前后两半A1 A2,分别计算A1 A2的逆序对个数K1 K2,然后再计算A1 A2的逆序对个数K3,数组A的逆序对个数&

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值