五大基础算法——分治法

1、定义
分治法的主题思想就是分而治之,也就是说把一个大原问题变成两个或者多个小问题解决,最后把小问题的解合并起来就是原问题的解。
      分——将原问题分解为多个小问题;
      治——将这些小问题逐个解决;
      合——将小问题解合并,就得出原问题的解;
2.算法实现
a、分治法的范式
①分解问题:把原问题分解为若干个与原问题性质相类似的子问题
②求解子问题:不断分解子问题直到可方便求出子问题的解为止
③合并子问题的解:合并子问题的解得到原问题的解
b、递归式
①divide:把具有n个元素的数组分解为二个n/2大小的子数组
②conquer:递归地分解子数组,直到子数组只包含一个元素为止
③combine:二二合并已排好序的子数组使之成为一个新的排好序的子数 组,重复这样二二合并的过程直到得到原问题的解
利用递归的思想,把问题一分为二,二分为四,直到只有一个很小的问题为止。再把小问题的解合并,最后得到原问题的解。
递归式时间复杂度:
T ( n ) = a T ( b n ) + D ( n ) + C ( n ) T(n)=aT(\frac{b}{n})+D(n)+C(n) T(n)=aT(nb)+D(n)+C(n)
3、分治法的适用条件
(1)可以把原问题分解成两个或者多个小问题。
(2)分解成小问题后求解更加方便。
(3)原问题的解可以由所有小问题的解的合并。
最后说一下,分治法算不上算法,分治只是一个思想,很多算法都会用到这种思想。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值