话题
搜索


A类序列 {一个}_(n=1)^n如果满足以下条件,则形成(二进制)堆a_(|_j/2_|)<=a_j对于2<=j<=N,其中|_x个_|楼层功能,相当于a_i<a_(2i)a_i<a_(2i+1)对于1<=i<=(N-1)/2。因此,第一个成员必须是最小。堆可以被视为标记的二叉树其中我第个节点比其任何后代的标签都小(Skiena 1990,第35页)。堆支持在中任意插入和查找/删除最小值O(单位:lnn)每次更新次数(Skiena 1990,第38页)。

堆

列表可以在中转换为堆O(n)使用Floyd(1964)算法的次数。例如,鉴于随机排列 {6,2,7,9,5,3,4,8,10,1},Floyd的算法给出堆{1,2,3,8,5,7,4,9,10,6}(左图)。右图显示了一个包含30个元素的堆。

n个
1{1}
2{1, 2}
{1, 2, 3},{1,3, 2}
4{1,2, 3, 4},{1, 2, 4, 3},{1, 3, 2, 4}

堆的数量a(n)n=1, 2, ... 元素为1、1、2、3、8,20, 80, 210, 896, 3360, ... (组织环境信息系统A056971号),前几项在上表中进行了总结。一个公式a(n)由提供

 a(n)=(n-1;b+R1)a(b+r1)a(b+r2)
(1)

具有a(0)=0,a(1)=1、和

小时=|_对数2(n+1)|-1
(2)
b条=2小时-1分
(3)
第页=n-1-2b号
(4)
第1段=r-|_r/(2^h)_|(r-2^h)
(5)
第2段=r-r_1。
(6)

堆的数量我级别(或等效的,堆的数量2 ^1至1元素)由重现关系

 S_l=(2^l-2;2^(1-1)-1)S_(l-1)^2
(7)

具有S_1=1(斯基纳1990年,第36页)。这个可以作为产品编写为

 S_l=((2^l-1)!)/(产品_(k=1)^(n)(2^k-1)^,
(8)

其值对于l=1,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年。斯隆,N.J。答:。序列A056971号A056972号在“在线整数百科全书”中序列。"

参考Wolfram | Alpha

引用如下:

埃里克·魏斯坦(Eric W.Weisstein)。“堆”来自数学世界--A类Wolfram Web资源。https://mathworld.wolfram.com/Heap.html

主题分类