堆排序

堆排序 :堆排序的时间复杂度为O(nlogn)

图解参考:https://www.cnblogs.com/wanglei5205/p/8733524.html

#include "iostream"
#include<vector>
using namespace std;
//递归的方式构建大根堆 :父节点的值大于两个子节点 
//通过index可以知道 父节点的下标为 (index -1)/2
void adjust(vector<int> &arr,int len,int index){
	if(index>=len){
		return;
	}
	int left=2*index+1;   //左子节点下标  2*index+1 
	int right=2*index+2;	//右子节点 2*index+2
	int maxIdx=index;     //假设父节点的值 maxidx存储最大值的下标 
	if(left<len&&arr[left]>arr[maxIdx]) maxIdx=left; //left<len 主要防止left的值大于数组长度 
	if(right<len&&arr[right]>arr[maxIdx]) maxIdx=right;//同上 
	if(maxIdx!=index){
		swap(arr[maxIdx],arr[index]); //交换两个数的值 
		adjust(arr,len,maxIdx) ; //递归调用 
	}
}  

//堆排序
void heapSort(vector<int> &arr,int size){
	for(int i=size/2-1;i>=0;i--){  //   size/2-1 是每个父节点的下标 
		adjust(arr,size,i);	    	// 通过遍历父节点 调用方法adjust 实现大数堆 
	} 
	for(int i=size-1;i>=1;i--){
		swap(arr[0],arr[i]); 		//先把数组第一个和最后一个数交换 ,再调用adjust重构大数堆 
		adjust(arr,i,0) ;        
	} 	

} 

int main()
{	vector<int> arr;
     int a[9] = {8,1,14,3 ,21 ,5, 2 ,7,10} ;
	for(int i=0;i<sizeof(a)/4;i++){
		arr.push_back(a[i]);
	} 
    heapSort(arr, arr.size());

    for(int i=0;i<arr.size();i++)
    {
        cout<<arr[i]<<endl;
    }
    return 0;
}
 
【源码免费下载链接】:https://renmaiwang.cn/s/jmsue 卷积神经网络(Convolutional Neural Networks, CNN)是一种深度学习模型,在图像处理和计算机视觉领域具有重要应用价值。通过MATLAB这一强大的工具平台,我们可以方便地实现CNN模型的构建、训练与优化过程。该压缩包中的MATLAB代码提供了一个完整的CNN实例,用户可以直接运行并观察其工作原理。理解CNN的基本结构是掌握其核心功能的关键。CNN通常由卷积层、池化层、全连接层以及激活函数等主要组件构成。具体来说,卷积层通过使用卷积核对输入图像进行扫描操作,提取图像中的特征信息;池化层则能够有效降低数据维度的同时减少计算量,并保留关键的视觉信息特征;全连接层负责将之前提取的特征信号映射到目标任务(如分类或回归)所需的输出结果空间中。此外,在MATLAB环境下,我们可以通过`deepLearningNetwork`函数轻松创建一个CNN模型架构。具体步骤包括:首先定义网络结构参数,例如卷积层的数量、尺寸以及激活函数类型等;其次设计完整的网络层次结构,并配置相关的超参数设置;最后利用提供的训练数据对模型进行优化和调参。在实际操作中,用户需要准备并整理好适合CNN处理的高质量图像数据集,并对其进行预处理工作,如归一化、裁剪或翻转等;接着可以使用MATLAB内置的数据导入与管理工具(如`imageDatastore`)来简化数据加载流程;最后通过设置合适的训练选项参数和执行训练过程,使模型能够自动学习并提取具有判别性的特征。在模型训练完成后,用户可以通过调用`classify`或`predict`函数对测试集中的图像进行分类预测,并评估模型的性能表现。值得注意的是,在这个压缩包中提供的CNN代码实例可能包含了从数据准备到模型部署的完整流程,其中包括了可视化、超参数调整等功能模
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值