我們再分析插入情況
最後分析調堆情況
在DEAP中插入結點
void InsertDEAP(int l[]
//在DEAP中插入元素x
{if (m>=n && m<>
{m++; //m增
if (x>r[m/
{l[m]=r[m/
c=m/
while (f>
{r[c]=r[f]; c=f; f=c/
r[c]=x;
} //結束調大堆
else //調小堆
{c=m; f=c/
while (f>
{l[c]=l[f]; c=f; f=c/
l[c]=x;
}
else //在大堆插入x
{n++; //n增
if (x<l[n]) //若x小於小堆中相應結點
{r[n]=l[n];
c=n; f=c/
while (f>
{l[c]=l[f]; c=f; f=c/
l[c]=x;
} //結束調小堆
else //調大堆
{c=n; f=c/
while (f>
{r[c]=r[f]; c=f; f=c/
r[c]=x;
}
}//結束InsertDEAP算法
[
From:http://tw.wingwit.com/Article/program/sjjg/201311/23171.html