算法分析与设计实验5

实验报告

课程名称 《算法分析与设计》 实验日期 2021年4月12日 至 2021年 4 月 18日
学生姓名 戴子博 所在班级 计算机194 学号 2019212212130
实验名称 最近对问题
实验地点 恕园16-302 同组人员

1.问题
最近对问题
2.解析

3.设计

double ClosePair(point p[],point q[],int n){
    if(n==2)
    return distance(p[0],p[1]);
    
    if(n==3){
        double d1,d2,d3;
        d1=distance(p[0],p[1]);
        d2=distance(p[1],p[2]);
        d3=distance(p[0],p[2]);
        return min(d1,min(d2,d3));
    }
    
    int mid=n/2;
    point pl[mid],ql[mid],pr[n-mid],qr[n-mid],s[n];
    for(int i=0;i<mid;i++){
        pl[i]=p[i];
        ql[i]=q[i];
    }
    for(int i=0;i<n-mid;i++){
        pr[i]=p[mid+i];
        qr[i]=q[mid+i];
    }
    double dl,dr,d,dminsq;
    dl=ClosePair(pl,ql,mid);
    dr=ClosePair(pr,qr,n-mid);
    d=min(dl,dr);
    double m=p[mid-1].x;
    
    int num=0;
    for(int i=0;i<n;i++){
        if(abs(q[i].x-m)<d){
            s[num]=q[i];
            num++;
        }
    }
    
    dminsq=d*d;
    for(int i=0;i<num-2;i++){
        for(int j=i+1;j<=num-1&&pow(s[j].y-s[i].y,2)<dminsq;j++){
            dminsq=min(pow(s[j].x-s[i].x,2)+pow(s[j].y-s[i].y,2),dminsq);
        }
    }
    return sqrt(dminsq);
}

4.分析
[算法复杂度推导]
5.源码
博客地址:https://blog.csdn.net/shaojinfu?spm=1000.2115.3001.5343
github源码地址:https://github.com/CNFierceman/Algorithm_homework.git

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值