小公司研发总监,既当司令也当兵!
分类: LINUX
2016-02-16 22:15:00
二叉堆是完全二叉树或者是近似完全二叉树。
二叉堆满足二个特性:
1.父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。
2.每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。
当父结点的键值总是大于或等于任何一个子节点的键值时为最大堆。当父结点的键值总是小于或等于任何一个子节点的键值时为最小堆。下图展示一个最小堆:
点击(此处)折叠或打开
由于其它几种堆(二项式堆,斐波纳契堆等)用的较少,一般将二叉堆就简称为堆。
堆的操作一般包括初始化、插入和删除:
下面是堆的简单实现:
堆排序
理解堆的插入和删除后,堆排序实现就非常简单了。下面是堆排序的简单实现:
点击(此处)折叠或打开