算法设计之分治法、减治法

一、减治法

1、基本思想

减治法,即减而治之(Decrease-and-conquer

为求解一个大规模的问题,可以将其划分为两个子问题:其一平凡,另一规模缩减,分别求其子问题,由子问题的解,得到原问题的解。



2、实例:数组求和

用一简单的例子,数组求和,分别使用减而治之和分而治之的思想来实现,互相对比,容易理解。

int sum (int A[],int lo,int hi) {
        int mid = (lo+hi) >> 1;
        if (lo == hi) return A[lo];
        return sum(A,lo,mid) + sum(A,mid+1,hi);
}

二、分治法

即分而治之(Divided-and-conquer)

一、基本思想

为求一个大规模的问题,可以将其划分为若干(通常两个)子问题,规模大体相当,分别求子问题,由子问题的解,得到原问题的解。


二、实例:数组求和

int sum (int A[],int n){
        return n < 1 ? 0 : sum (A,n-1) + A[n-1];
}




评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值