一序列
如果满足以下条件,则形成(二进制)堆
对于
,其中
是楼层功能,相当于
和
对于
。因此,第一个成员必须是最小的。堆可以被视为标记的二叉树其中
第个节点比其任何后代的标签都小(Skiena 1990,第35页)。堆支持在中任意插入和查找/删除最小值
每次更新的次数(Skiena 1990,第38页)。
列表可以在中转换为堆
使用Floyd(1964)算法的次数。例如,鉴于随机排列
,Floyd的算法给出堆
(左图)。右图显示了一个包含30个元素的堆。
![n个](/images/equations/Heap/Inline13.svg) | 堆 |
1 | 1![}](/images/equations/Heap/Inline15.svg) |
2 | 1, 2![}](/images/equations/Heap/Inline17.svg) |
三 | 1, 2, 3 , 1,3, 2![}](/images/equations/Heap/Inline21.svg) |
4 | 1,2, 3, 4 , 1, 2, 4, 3 , 1, 3, 2, 4![}](/images/equations/Heap/Inline27.svg) |
堆的数量
在
, 2, ... 元素为1、1、2、3、8,20, 80, 210, 896, 3360, ... (组织环境信息系统A056971号),前几项在上表中进行了总结。一个公式
由提供
![a(n)=(n-1;b+R1)a(b+r1)a(b+r2)](/images/equations/Heap/NumberedEquation1.svg) |
(1)
|
具有
,
、和
堆的数量
级别(或等效地
元素)由重现关系
![S_l=(2^l-2;2^(1-1)-1)S_(l-1)^2](/images/equations/Heap/NumberedEquation2.svg) |
(7)
|
具有
(Skiena 1990年,第36页)。这个可以作为产品编写为
![S_l=((2^l-1)!)/(产品_(k=1)^(n)(2^k-1)^,](/images/equations/Heap/NumberedEquation3.svg) |
(8)
|
其值对于
,2, ... 是1、2、80、21964800、7483682586183580080000。。。(组织环境信息系统A056972号).
另请参见
二叉树,完全二叉树,堆(Heapsort),优先排队
与Wolfram一起探索| Alpha
工具书类
弗洛伊德·R·W·。“算法245:Treesort 3。”通信ACM 7, 701, 1964.科努特,D.E。这个计算机编程艺术,第3卷:排序和搜索,第2版。马萨诸塞州雷丁:Addison-Wesley,1998年。Skiena,S.“堆”§1.4.4在里面实施离散数学:组合数学和图论与数学。阅读,马萨诸塞州:Addison-Wesley,第35-39页,1990年。S.S.斯基纳。“堆。”§1.4.4英寸这个算法设计手册。纽约:Springer-Verlag,第35-39页,1997年。斯隆,新泽西州。答:。序列A056971号和A056972号在“在线整数百科全书”中序列。"参考Wolfram | Alpha
堆
引用如下:
埃里克·魏斯坦(Eric W.Weisstein)。“堆”来自数学世界--A类Wolfram Web资源。https://mathworld.wolfram.com/Heap.html
主题分类