给定一个整数数组,将其堆化为最小堆数组。

本文深入探讨了堆排序算法的核心概念,详细解释了如何通过构建最小堆实现数组元素的有效排序。通过对代码片段的逐行解析,读者可以理解堆排序中heapify和min_heap函数的工作原理,包括如何将任意数组转换为最小堆,以及如何通过调整子节点位置维持堆属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

class Solution{
	void heapify(vector<int>& A){
		for(int i = A.size()/2; i >= 0;i--)
			min_heap(A, i);
	}
	
	void min_heap(vector<int> &nums, int k){
		int len = nums.size();
		while(k < len){
			int min_index = k;
			if(k*2+1 < len && nums[k*2+1] < nums[min_index])
				min_index = k*2+1;
			
			if(k*2+2 < len && nums[k*2+2] < nums[min_index])
				min_index = k*2+2;
			if(k == min_index)
				break;
			
			swap(nums[k], nums[min_index]);
			k = min_index;
		}
		
	}
	
};

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值