第第44章堆和不相交集数据章堆和不相交集数据结构结构4
1引言(堆、不相交集)引言(堆、不相交集)4
1堆上的运算4
4最大堆和最小堆4
3不相交集数据结构4
1按秩合并措施4
3Union-FindUnion-Find算法算法4
2路径压缩4
4Union-FindUnion-Find算法的分析(略)算法的分析(略)4
2堆堆㈠堆的引入㈠堆的引入在许多算法中,需要支持下面二种运算:在许多算法中,需要支持下面二种运算:插入元素插入元素寻找最大值元素(或最小值元素)寻找最大值元素(或最小值元素)支持这二种运算的数据结构称为优先队列
支持这二种运算的数据结构称为优先队列
可采用下述三种方法实现优先队列:可采用下述三种方法实现优先队列:①①使用普通队列(或数组),插入容易(尾部),使用普通队列(或数组),插入容易(尾部),但寻找最大值需搜索整个队列,开销比较大
但寻找最大值需搜索整个队列,开销比较大
②②使用排序数组,寻找最大值元素容易,插入操作使用排序数组,寻找最大值元素容易,插入操作需移动很多元素
需移动很多元素
③③使用堆,寻找最大值元素容易,插入操作仅需移使用堆,寻找最大值元素容易,插入操作仅需移动少量元素
1((Page74Page74))一个(二叉)堆是一棵几乎完全的二叉树,一个(二叉)堆是一棵几乎完全的二叉树,它的每个结点都满足堆的特性:设它的每个结点都满足堆的特性:设vv是一个结点,是一个结点,p(v)p(v)是是vv的父结点,那么存储在的父结点,那么存储在p(v)p(v)中的数据中的数据项键值大于或等于存储在项键值大于或等于存储在vv中的数据项键值
中的数据项键值
㈡堆的定义(二叉堆)㈡堆的定义(二叉堆)几乎完全二叉树(几乎完全二叉树(Page