特殊的完全二叉树——堆

1.堆的定义

        堆(heaps)是一种特殊的数据组织方式,STL 中的 priority_queue 容器适配器底层就是采用堆来组织数据存储的。

                      一般可用变量size存储堆的长度,数组名为heep。

2.堆的基本操作

特殊的完全二叉树——堆_第1张图片

3.堆的基本性质 

特殊的完全二叉树——堆_第2张图片

4.堆的存储 

特殊的完全二叉树——堆_第3张图片

5.堆的维护1——down()

特殊的完全二叉树——堆_第4张图片

代码如下: 

void down(int k)
{
	int t=k;
	if(k*2<=size && heep[k*2]

6.堆的维护2——up()

 特殊的完全二叉树——堆_第5张图片

代码如下:  

void up(int k)
{
	while(k/2 && heep[k/2]>heep[k])
	{
		swap(heep[k/2],heep[k]);
		k/=2;
	}
} 

7.堆的基本操作之caru()

int caru(int x)
{
	heep[++size]=x;
	up(size);
	//down(size);
} 

 8.堆的基本操作之min_dui()

int min_dui(int x)
{
	return heep[1];
} 

 9.堆的基本操作之dele_min()

int dele_min(int x)
{
	heep[1]=heep[size];
	size--;
	down(1);
} 

  10.堆的基本操作之dele_k()

int dele_k(int k)
{
	heep[k]=heep[size];
	size--;
	down(1),up(1);
} 

  11.堆的基本操作之xiug_k()

int xiug_k(int k)
{
	heep[k]=x;
	down(k),up(k);
} 

你可能感兴趣的:(大数据)