分治思想的应用之——二分法

本文介绍了分治算法的基本思想,强调了其应用于二分法的条件。通过举例说明,详细阐述了如何使用二分法寻找数组中的最大值和最小值,同时提供了一段C++代码实现,展示了二分法提高效率的优势。
摘要由CSDN通过智能技术生成
分治算法是一种很常用的思想,当你遇到大问题的时候,你可能无从下手,那么我们就可以想想问题能不能用分治法解决呢?
应用分治法必须需要满足两个条件:
(1)一个大问题它能分解成若干个独立的子问题
(2)每个子问题的求解过程都和大问题相似

当满足条件的时候,我们就可以试着用分治算法解决问题

在分治算法中有一种分支叫二分法,顾名思义,就是将问题一分为二,然后在分的算法。应用很广泛,譬如折半查找,它的时间效率比起正常的算法要高许多。

举例说明二分法:
求一个集合中最大值,和最小值;
思路 :正常想法,先排序,再求。可以,但要是集合很大,那么效率就成问题了
下面我们来看看用二分法实现的代码:(C++)
#include"stdio.h"
#define MAXLEN 10000

int a[MAXLEN];
int main()
{
    int i,fmax=0,fmin=0;
    void mini(int i,int j,int &fmaxx,int &fminx);//二分分治
    for(i=0;i<10000;i++)
    {
        a[i]=i;
    }


    mini(0,9999,fmax,fmin);

    printf("max %d min %d
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值