堆及其应用江苏省华罗庚中学杨志军第一页,共三十九页
堆的定义01堆的性质02堆的基本操作03堆的应用04TableofContents内容大纲第二页,共三十九页
预备知识•完全二叉树:如果一棵深度为K的二叉树,1至K-1层的结点都是满的,即满足2i-1(1heap[son]){tmp=heap[son/2];heap[son/2]=heap[son];heap[son]=tmp;son=son/2;}}第十五页,共三十九页
Get操作11254437565754614321heap第十六页,共三十九页
Get操作11254437565754614321heap612544375第十七页,共三十九页
Get操作612544375575414326heap162544375pa第十八页,共三十九页
Get操作162544375575464321heap142564375pa第十九页,共三十九页
Get操作142564375575644321heappa第二十页,共三十九页
functionget:longint;varpa,son,tmp:longint;beginget:=heap[1];heap[1]:=heap[len];len:=len-1;pa:=1;whilepa*2len)or(heap[pa*2]heap[son]thenbegintmp:=heap[pa];heap[pa]:=heap[son];heap[son]:=tmp;pa:=son;endelsebreak;end;end;第二十一页,共三十九页
intget(){intp=heap[1],pa=1,son,tmp;heap[1]=heap[len];len--;while(pa*2len||heap[pa*2]heap[son]){tmp=heap[pa];heap[pa]=heap[son];he