二叉堆,d堆,左式堆

来源:互联网 发布:金数据怎么导出数据 编辑:程序博客网 时间:2024/06/05 02:51

实现优先队列结构主要是通过堆完成,主要有:二叉堆、d堆、左式堆、斜堆、二项堆、斐波那契堆、pairing 堆等。

 

1. 二叉堆

 

1.1. 定义

完全二叉树,根最小。

存储时使用层序。

结构之美——优先队列基本结构(四)——二叉堆、d堆、左式堆、

 

1.2. 操作

(1). insert(上滤)

插入末尾 26,不断向上比较,大于26则交换位置,小于则停止。

结构之美——优先队列基本结构(四)——二叉堆、d堆、左式堆、

 

(2). deleteMin(下滤)

提取末尾元素,放在堆顶,不断下滤:

结构之美——优先队列基本结构(四)——二叉堆、d堆、左式堆、

 

(3). 其他操作:

都是基于insert(上滤)与deleteMin(下滤)的操作。

减小元素:减小节点的值,上滤调整堆。

增大元素:增加节点的值,下滤调整堆。

删除非顶点节点:直接删除会出问题。方法:减小元素的值到无穷小,上滤后删除。

Merge:insert> 

2. d叉堆

2.1. 定义

完全d叉树,根最小。

存储时使用层序。

结构之美——优先队列基本结构(四)——二叉堆、d堆、左式堆、

 

2.2. 操作:

操作跟二叉堆基本一致:insert,deleteMin,增大元素,减小元素,删除非顶元素,merge。

结构之美——优先队列基本结构(四)——二叉堆、d堆、左式堆、

 

2.3 二叉堆与d叉堆的对比:

结构之美——优先队列基本结构(四)——二叉堆、d堆、左式堆、

 

3. 左式堆

3.1. 定义

零路径长度:到没有两个儿子的节点最短距离左式堆:1.一棵二叉树2.零路径长:左儿子≧右儿子,父节点= min{儿子} +1(这条性质导致了左式堆的严重左偏) 零路径长度:结构之美——优先队列基本结构(四)——二叉堆、d堆、左式堆、  

3.2. 操作:

(1) merge :

原则:根值大的堆与根值小的堆的右子堆合并(根值:根位置的元素值,并非零路径长度) 结构之美——优先队列基本结构(四)——二叉堆、d堆、左式堆、 具体分三种情况(设堆H1的根值小于H2)H1只有一个节点H1根无右孩子H1根有右孩子 (1.1).H1只有一个节点,若出现不满足:零路径长:左儿子≧右儿子,交换左右孩子。结构之美——优先队列基本结构(四)——二叉堆、d堆、左式堆、 (1.2).H1根无右孩子,若出现不满足:零路径长:左儿子≧右儿子,交换左右孩子。 

结构之美——优先队列基本结构(四)——二叉堆、d堆、左式堆、

 

(1.3).H1根有右孩子

1.初始状态,H1的根6,H2的根为8,将H2合并到H1。

结构之美——优先队列基本结构(四)——二叉堆、d堆、左式堆、

2.将H1构造成根无右孩子的形式:

结构之美——优先队列基本结构(四)——二叉堆、d堆、左式堆、

3.将元素10, merge到H2,要首先将H2构造成根无右孩子的形式,递归,merge,若出现不满足:零路径长:左儿子≧右儿子,交换左右孩子……

结构之美——优先队列基本结构(四)——二叉堆、d堆、左式堆、——》结构之美——优先队列基本结构(四)——二叉堆、d堆、左式堆、——》结构之美——优先队列基本结构(四)——二叉堆、d堆、左式堆、——》结构之美——优先队列基本结构(四)——二叉堆、d堆、左式堆、

4.

结构之美——优先队列基本结构(四)——二叉堆、d堆、左式堆、

5.

结构之美——优先队列基本结构(四)——二叉堆、d堆、左式堆、

3.3. 性质分析:

insert:mergedeleteMin:delete root,merge时间复杂度:merge与右路径长度之和成正比;最坏O(logN)缺点:交换需判断;维护零路径长

 

4. 斜堆

 

4.1. 定义

二叉树,根最小。由此可见: 结构之美——优先队列基本结构(四)——二叉堆、d堆、左式堆、  特点:merge无条件交换。 时间复杂度:最坏O(N);最好?(1);平均O(logN)

 

4.2性能比较:

结构之美——优先队列基本结构(四)——二叉堆、d堆、左式堆、

 

 

5. 总结

结构之美——优先队列基本结构(四)——二叉堆、d堆、左式堆、

 

如果是不支持所谓的合并操作union的话,普通的堆数据结构就是一种很理想的数据结构(堆排序)。 但是如果想要支持集合上的合并操作的话,最好是使用二项堆或者是斐波那契堆,普通的堆在union操作上最差的情况是O(n),但是二项堆和斐波那契堆是O(lgn)。

                         Binary heap              Binomial heap          Fibonacci heap

                       二叉堆(最坏情况) 二项堆(最坏情况)(斐波那契堆(平摊))

Procedure    (worst-case)    (worst-case)       (amortized)

--------------------------------------------------------------

MAKE-HEAP         结构之美——优先队列基本结构(四)——二叉堆、d堆、左式堆、(1)          结构之美——优先队列基本结构(四)——二叉堆、d堆、左式堆、(1)           结构之美——优先队列基本结构(四)——二叉堆、d堆、左式堆、(1)

INSERT           结构之美——优先队列基本结构(四)——二叉堆、d堆、左式堆、(lg n)        O(lg n)           结构之美——优先队列基本结构(四)——二叉堆、d堆、左式堆、(1)

MINIMUM          结构之美——优先队列基本结构(四)——二叉堆、d堆、左式堆、(1)          O(lg n)            结构之美——优先队列基本结构(四)——二叉堆、d堆、左式堆、(l)

EXTRACT-MIN      结构之美——优先队列基本结构(四)——二叉堆、d堆、左式堆、(lg n)        结构之美——优先队列基本结构(四)——二叉堆、d堆、左式堆、(1g n)          O(lg n)

UNION             结构之美——优先队列基本结构(四)——二叉堆、d堆、左式堆、(n)          O(lg n)           结构之美——优先队列基本结构(四)——二叉堆、d堆、左式堆、(1)

DECREASE-KEY     结构之美——优先队列基本结构(四)——二叉堆、d堆、左式堆、(lg n)        结构之美——优先队列基本结构(四)——二叉堆、d堆、左式堆、(lg n)          结构之美——优先队列基本结构(四)——二叉堆、d堆、左式堆、(1)

DELETE            结构之美——优先队列基本结构(四)——二叉堆、d堆、左式堆、(1g n)        结构之美——优先队列基本结构(四)——二叉堆、d堆、左式堆、(lg n)         O(lg n)

 

 

 

 

 

 

 

编译:结构之美——优先队列基本结构(四)——二叉堆、d堆、左式堆、

地址:http://www.07net01.com/program/33962.html

0 0
原创粉丝点击