您当前的位置: 首页 >  数据结构与算法

星拱北辰

暂无认证

  • 0浏览

    0关注

    1205博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【数据结构与算法】左式堆的Java实现

星拱北辰 发布时间:2020-02-23 21:58:17 ,浏览量:0

引言

二叉堆是对优先队列的一种高效实现,左式堆是针对二叉堆合并操作困难的缺点,而提出的另外一种优先队列实现方式。

线性结构合并困难是显而易见的,而二叉堆那样高效的支持合并操作而且只使用一个数组更是难得。 这是因为,合并似乎需要把一个数组拷贝到另一个数组中去,对于相同大小的堆,这将花费O(N)。 但这区区O(N)还不够,所以就不能使用顺序存储结构,应该使用链式指针。有一句话说的特别好:所有支持高效合并的高级数据结构都需要使用指针。 能更高效完成合并的左式堆和二项队列显然都是使用了指针,是链接存储的。

左式堆详解

这里有一篇比较详细的讲解,可看

从npl属性看左式堆

注意理解 npl 这个属性,npl 是 null path length 的缩写,意为从该结点到达一个没有两个孩子的结点的最短距离(一个孩子的结点或者叶子结点)。 一般定义 null 的 npl 为 -1 以使计算简便。 容易得到,任意结点的 npl 是它的子结点的 npl 中较小的那个结点的 npl+1 。 即

关注
打赏
1660750074
查看更多评论
立即登录/注册

微信扫码登录

0.0411s