个人热身程序(二.堆排序)

#include <stdio.h>
#define LENGTH(a) (sizeof(a)/sizeof(a[0])) //计算数组大小
int main(int argc,char *args[])
{
        int target[]={6,8,4,9,6,3,10};
        void printarray(int length,int keys[]);
        printf("before adopt max heap:/n");
        printarray(LENGTH(target),target);
        void adopt_max_heap(int target[],int i,int length);
        void built_max_heap(int target[],int length);
        void max_heap_sort(int target[],int length);
//      adopt_max_heap(target,2,LENGTH(target));
        //built_max_heap(target,LENGTH(target));
        
        max_heap_sort(target,LENGTH(target));
        printf("/nafer adopt max heap:/n");
        printarray(LENGTH(target),target);
        printf("/n");
}
//输出数组的值
void printarray(int length,int keys[])
{
        int i=0;
        for(;i<length-1;i++)
     {
                printf("%d,",keys[i]);
        }
        printf("%d",keys[i]);
}
//保持大顶堆的属性
void adopt_max_heap(int target[],int i,int length)
{
        int leftchild;
        int rightchild;
        int max;
        if(i>length)
        {
                return;
        }
        else
        {
                max=target[i-1];
                if(2*i-1<length)
                {
                        leftchild=target[2*i-1];
                        if(2*i<length)
                        {
                                rightchild=target[2*i];
         if(leftchild>max&&leftchild>=rightchild)
                                {
                                        leftchild+=target[i-1];
                                        target[i-1]=leftchild-target[i-1];
                                        leftchild=leftchild-target[i-1];
                                        target[2*i-1]=leftchild;
                                        adopt_max_heap(target,2*i,length);
                                }else if(rightchild>max&&rightchild>=leftchild)
                                {
                                        rightchild+=target[i-1];
                                        target[i-1]=rightchild-target[i-1];
                                        rightchild=rightchild-target[i-1];
                                        target[2*i]=rightchild;
                                        adopt_max_heap(target,2*i+1,length);
                                }
                        }
                        else if(leftchild>max)
                        {
                                leftchild+=target[i-1];
                                target[i-1]=leftchild-target[i-1];
                                leftchild=leftchild-target[i-1];
                                target[2*i-1]=leftchild;
                        }
          }
                        
        }
}
//构建大顶堆
void built_max_heap(int target[],int length)
{
        int i=length/2;
        while(i>0)
        {
                adopt_max_heap(target,i,length);
                i--;
        }
}
//大顶堆排序
void max_heap_sort(int target[],int length)
{
        while(length>1)
        {
                
                built_max_heap(target,length);
                target[length-1]+=target[0];
                target[0]=target[length-1]-target[0];
                target[length-1]=target[length-1]-target[0];
                length--;
  }
}

}




 
【创新未发表!】基于BKA算法优化-BP、HO算法优化-BP、CP算法优化-BP、GOOSE算法优化-BP、NRBO算法优化-BP神经网络回归预测比较研究(Matlab代码)内容概要:本文档聚焦于五种优化算法(A、HO、CP、GOOSE、NRBO)与BP神经网络结合的回归预测性能比较研究,所有内容均基于Matlab代码实现。研究属于创新未发表成果,涵盖机器学习、深度学习、智能优化算法等多个科研方向的应用实例,尤其在时序预测、回归分析等领域。文档还列举了大量相关课题,如微电网多目标优化调度、储能选址定容、轴承故障诊断等,展示了广泛的科研应用场景和技术实现手段。; 适合人群:具备一定Matlab编程基础,从事科研或工程应用的研究人员,尤其是关注智能优化算法与神经网络结合应用的硕士、博士研究生及科研工作者。; 使用场景及目标:①用于科研项目中对比不同优化算法对BP神经网络回归预测性能的影响;②为相关领域如能源调度、故障诊断、负荷预测等提供算法实现参考与代码支持;③辅助学术论文撰写与实验验证。; 阅读建议:此资源以实际Matlab代码为核心,建议读者结合文档中提供的网盘链接获取完整代码资源,并在实践中运行和调试代码,深入理解各算法的实现细节与优化机制。同时建议按目录顺序系统学习,以便构建完整的知识体系。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值