- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[理学]堆与互不相交集课件
(1)堆的定义 个元素称为堆,当且仅当它的关键字序列满足: 或者满足: 把式 的堆称为最小堆;把式 的堆称为最大堆。 由堆定义知:它是一棵完全二叉树。若树的高度为,则堆具有如下性质: 所有的叶子结点不是处在第 层,就是处在第 层。 当 时,第 层上的 个结点。 第 层上如果有分支结点,则这些分支结点都集中在树的最左边。 每个结点所存放元素的关键字,都大于(最大者)或小于(最小者)它子孙结点所存放元素的关键字。 对于一个具有 个元素的堆,可以很方便地用如下方法,由数组 来存放它: 根结点存放在 。 假定结点 存放在 ,如果它有左孩子结点,则其左孩子结点存放 ;如果它有右孩子结点,则其右孩子结点存放 。 非根结点 的父结点存放在 (2)举例:输入数据20,17,9,10,11,4,5,3,7,5 (3)堆的运算 sift_up[H,i]:将H[i]向上调整到合适的位置,使H成 为堆。 sift_down[H,i]:向下调整H[i]到合适的位置,使H成 为堆。 delete_max[H,i]:从堆H中删除第i项。 insert[H,x]:插入x到堆H中。 makeheap[A]:将数组A转换成堆。 过程 SIFT_UP 输入:数组H[1…n]及i,1?i?n 输出:上移H[i],以使它不大于父结点 1 done=false 2 if i=1 then exit 3 repeat 4 if key(H[i])key(H[i/2]) then key(H[i])与key(H[i/2])交换 5 else done=true 6 i=?i/2? 7 until i=1 or done 过程 SIFT_DOWN 输入:数组H[1…n]及i,1?i?n 输出:下移H[i],以使它不小于父结点 1 done=false 2 if 2in then exit 3 repeat 4 i=2i 5 if i+1?n and key(H[i+1])key(H[i]) then i=i+1 6 if key(H[i/2])key(H[i]) then key(H[i])与key(H[i/2])交换 7 else done=true 8 end if 9 until i=1 or done 算法4.1 INSERT 输入:堆H[1…n]和元素x 输出:新的堆H[1…n+1],x为其元素之一 1 n=n+1 2 H[n]=x 3 SIFT_UP(H,n) 算法4.2 DELETE 输入:非空堆H[1…n]及i,1?i?n 输出:删除H[i]之后的新的堆H[1…n-1] 1 x=H[i];y=H[n] 2 n=n-1 3 if i=n+1 then exit 4 H[i]=y 5 if key(y)?key(x) then SIFT_UP(H,i) 6 else SIFT_DOWN(H,i) 7 end if 算法4.3 DELETE_MAX 输入:堆H[1…n] 输出:返回最大键值x并将其从堆删除H[1] 1 x=H[1] 2 DELETE(H,1) 3 return x 堆创建举例:输入序列4,38,10,1
文档评论(0)