Java实现堆排序

步骤:

  1. 构建大根堆,父节点大于右孩子大于左孩子
  2. 首尾交换然后排序

代码

void heap(int[] arr) {
		int n = arr.length;
		int t;
		// 将数组转变成堆
		for (int i = n / 2 - 1; i >= 0; i--) {
			// 如果第i个节点有右孩子,那么n为 单数,n/2向下取整后,再反向计算,肯定是小于n的;
			
			while (2 * i + 1 < n) {
				int j = 2 * i + 1;
				if (j + 1 < n) { //如果有右孩子
					if (arr[j] < arr[j + 1]) {
						j++;
					}
				}
				if (arr[i] < arr[j]) {
					t = arr[i];
					arr[i] = arr[j];
					arr[j] = t;
					i = j;
				} else {
					break;
				}
			}
		}
		int  k;
		// 开始堆排序
		for (int a = n - 1; a > 0; a--) {
			// 首尾交换
			t = arr[0];   
			arr[0] = arr[a];
			arr[a] = t;
			k = 0;
			while (2 * k + 1 < a) {
				int j = 2 * k + 1;
				if ((j + 1) < a) {
					if (arr[j] < arr[j + 1]) {
						j++;
					}
				}
				if (arr[k] < arr[j]) {
					t = arr[k];
					arr[k] = arr[j];
					arr[j] = t;
					k = j;
				} else {
					break;
				}
			}
		}

	}
【创新未发表!】基于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、付费专栏及课程。

余额充值