1.堆的定义
堆(heaps)是一种特殊的数据组织方式,STL 中的 priority_queue 容器适配器底层就是采用堆来组织数据存储的。
一般可用变量size存储堆的长度,数组名为heep。
2.堆的基本操作
3.堆的基本性质
4.堆的存储
5.堆的维护1——down()
代码如下:
void down(int k)
{
int t=k;
if(k*2<=size && heep[k*2]<heep[t])
t=k*2;
if(k*2+1<=size && heep[k*2+1]<heep[t])
t=k*2+1;
if(k!=t)
{
swap(h[k],h[t]);
down(t);
}
}
6.堆的维护2——up()
代码如下:
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);
}