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

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;
		}
		
	}
	
};

猜你喜欢

转载自blog.csdn.net/sinat_36412790/article/details/81319065