博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
最大堆算法
阅读量:5109 次
发布时间:2019-06-13

本文共 1117 字,大约阅读时间需要 3 分钟。

最大堆 算法:
 
1、保持堆的性质。 MAX-HEAPIFY(A, i)从结点i开始保持二叉堆的性质,通过比较左子树,把最大的赋值给A【largest】,再比较右子树,最大的赋值给A【largest】,比较i 和 largest相不相等,不等则互换A[largest]和A[i],并且递归调用MAX-HEAPIFY(A,largest)。
 
代码:
1 MAX-HEAPIFY(A, i) 2  3       l←LEFT(i) 4  5      r←RIGHT(i) 6  7      if l≤heap-size[A] and A[l]>A[i] 8  9           then largest←l10 11            else largest←i12 13      if r≤heap-size[A] and A[r]>A[largest]14 15           then largest←r16 17      if largest≠i18 19           then exchange A[i]↔A[largest]20 21                     MAX-HEAPIFY(A, largest)

2、建堆。BUILD-MAX-HEAP(A) 将数组按顺序简历完全二叉树,即二叉堆,对的长度等于数组长度。然后从i = n/2开始调用MAX-HEAPIFY(A, i),i--,直到根(i==1)

代码:
1 BUILD-MAX-HEAP(A)2 3       heap-size[A] ← length[A]4 5      for i ← [lenth[A] / 2] downto 1    6 7           do MAX-HEAPIFY(A, i)

3、堆排序算法。HEAPSORT(A)进入循环,i=length(A).第一个节点和最后一个节点互换。堆的长度减一(即最后一个节点不参加排序,已经是排好序的以一个元素)。循环调用MAX-HEAPIFY(A, 1), i减一(循环到i=2)。

代码: 
HEAPSORT(A)      BUILD-MAX-HEAP(A)     for i ← length[A] downto 2          do exchange A[1] ↔ A[i]               heap-size[A] ← heap-size[A]-1               MAX-HEAPIFY(A, 1)

 

转载于:https://www.cnblogs.com/lxmhhy/p/3400048.html

你可能感兴趣的文章
C语言程序第一次作业
查看>>
leetcode-Sort List
查看>>
Windows系统SNMP数据监测与OID
查看>>
在CMD命令行下关闭进程的命令
查看>>
resin
查看>>
flow类型检查
查看>>
「Luogu P3183」[HAOI2016]食物链 解题报告
查看>>
腾讯云Ubuntu安装JDK和Tomcat
查看>>
JQuery基本知识、选择器、事件、DOM操作、动画
查看>>
java虚拟机(十一)--GC日志分析
查看>>
工作外的八小时,才能决定你究竟会成为一个什么样的人(转)
查看>>
phpcms
查看>>
中文词频统计
查看>>
[.net 面向对象编程基础] (19) LINQ基础
查看>>
Win10 虚拟桌面
查看>>
了解node.js
查看>>
想做移动开发,先看看别人怎么做
查看>>
Dynamics CRM 2013 初体验(1):系统的安装
查看>>
利用redis的订阅和发布来实现实时监控的一个DEMO(Python版本)
查看>>
Ping其他电脑ping不通的解决方法
查看>>