归并排序

一、归并排序

1、基本思想:

(1)分:使用二分法将n个记录看成是n个有序的子序列,每个子序列的长度为1。

(2)合:两两归并,直到得到一个长度为n的有序序列为止。

2、核心操作:将一维数组中前后相邻的两个有序序列归并为一个有序序列。

3、代码如下:

#include<stdio.h>
void Merge(int arr[], int tmp[], int startIndex, int midIndex, int endIndex)
{
	int i = startIndex;
	int j = midIndex + 1;
	int k = startIndex;  //新数组的下标

	while (i != midIndex + 1 && j != endIndex + 1) //左右都没越界
	{
		if (arr[i] > arr[j])
		{
			tmp[k++] = arr[j++];
		}
		else
		{
			tmp[k++] = arr[i++];
		}
	}
	while (i != midIndex + 1)
	{
		tmp[k++] = arr[i++];
	}
	while (j != endIndex + 1)
	{
		tmp[k++] = arr[j++];
	}

	for (int i = startIndex; i <= endIndex; ++i)
	{
		arr[i] = tmp[i];
	}
}
void MergeSort(int arr[], int tmp[], int startIndex, int endIndex)//数据所在数组、临时数组、开始下标、结束下标
{
	if (startIndex < endIndex)  //递归条件
	{
		int midIndex = (startIndex + endIndex) / 2;
		MergeSort(arr, tmp, startIndex, midIndex); //左半边再分
		MergeSort(arr, tmp, midIndex + 1, endIndex); //右半边再分
		Merge(arr, tmp, startIndex, midIndex, endIndex); //归并
	}
}


#define N 12
int main()
{
	int arr[12] = { 45, 5, 4, 12, 4, 156, 456, 465, 4, 12, 16, 6 };
	int len = sizeof(arr) / sizeof(arr[0]);
	int tmp[N];
	MergeSort(arr, tmp, 0, len - 1);
	return 0;
}


基于Swin Transformer与ASPP模块的图像分类系统设计与实现 本文介绍了一种结合Swin Transformer与空洞空间金字塔池化(ASPP)模块的高效图像分类系统。该系统通过融合Transformer的全局建模能力ASPP的多尺度特征提取优势,显著提升了模型在复杂场景下的分类性能。 模型架构创新 系统核心采用Swin Transformer作为骨干网络,其层次化窗口注意力机制能高效捕获长距离依赖关系。在特征提取阶段,创新性地引入ASPP模块,通过并行空洞卷积(膨胀率6/12/18)全局平均池化分支,实现多尺度上下文信息融合。ASPP输出经1x1卷积降维后与原始特征拼接,有效增强了模型对物体尺寸变化的鲁棒性。 训练优化策略 训练流程采用Adam优化器(学习率0.0001)交叉熵损失函数,支持多GPU并行训练。系统实现了完整的评估指标体系,包括准确率、精确率、召回率、特异度F1分数等6项指标,并通过动态曲线可视化模块实时监控训练过程。采用早停机制保最佳模型,验证集准确率提升可达3.2%。 工程实现亮点 1. 模块化设计:分离数据加载、模型构建训练流程,支持快速迭代 2. 自动化评估:每轮训练自动生成指标报告可视化曲线 3. 设备自适应:智能检测CUDA可用性,无缝切换训练设备 4. 中文支持:优化可视化界面的中文显示与负号渲染 实验表明,该系统在224×224分辨率图像分类任务中,仅需2个epoch即可达到92%以上的验证准确率。ASPP模块的引入使小目标识别准确率提升15%,特别适用于医疗影像等需要细粒度分类的场景。未来可通过轻量化改造进一步优化推理速度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值