Java教程

堆-模板

本文主要是介绍堆-模板,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

之前一直不想写的手写堆。
是大根堆模板,小根堆直接换一下转移的符号就行。
pile[maxn]是存储堆的数组,len是堆中元素的数量。
写法非常简单。
Code

void put(int k)
{
	pile[++len]=k;
	int pla=len;
	while(pla>1)
	{
		int fa=pla/2;
		if(pile[fa]>=pile[pla]) return;
		swap(pile[fa],pile[pla]);
		pla=fa;
	}
}
int get()
{
	int ans=pile[1];
	pile[1]=tree[len--];
	int pla=1;
	while(pla*2<=len)
	{
		int son=pla*2;
		if(son+1<=len&&pile[son]<pile[son+1]) son++;
		if(pile[pla]>=pile[son]) break;
		swap(pile[pla],pile[son]);
		pla=son;
	}
	return ans; 
}
这篇关于堆-模板的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!