Heap是一种数据结构它是一个完全二叉树具有以下的特点: Min heap: 父节点的值小于或等于子节点的值; Max heap: 父节点的值大于或等于子节点的值; public class minAndMaxheap { //大根堆和小根堆的实现 //优先级队列默认是小根堆的实现 static c ...
分类:
编程语言 时间:
2018-07-14 16:42:06
阅读次数:
178
左偏树(Leftist Tree)是一种可并堆的实现。左偏树是一棵二叉树,它的节点除了和二叉树的节点一样具有左右子树指针( left, right)外,还有两个属性,键值和距离(dist)。 键值:是用于比较节点的大小。 距离:节点i称为外节点(external node),当且仅当节点i的左子树或 ...
分类:
其他好文 时间:
2018-04-28 22:24:56
阅读次数:
184
篇首: 二叉堆是非常非常简单的数据结构,是入门级别的基础,但是我知道算法思想,没有去实践过(一般用到堆时直接STL的priority_queue),最近在刷刷基础且李总让我们总结算法,于是心血来潮手打一波二叉堆。(重要的事情说三遍:priority_queue是大根堆性质、priority_queu ...
分类:
其他好文 时间:
2018-03-10 00:20:53
阅读次数:
174
基本概念 哈夫曼树的求法 例3.3 哈夫曼树(1172) 为了方便快捷高效率的求得集合K中权值最小的两个元素,我们需要使用堆数据结构。它可以以O(logn)的复杂度取得n个元素中的最小元素。为了绕过对堆的实现,我们使用标准模板库中的相应的标准模板--优先队列。 ...
分类:
其他好文 时间:
2018-02-05 23:25:22
阅读次数:
542
因为二叉堆满足完全二叉树,一颗高为h的完全二叉树有2^h到2^h-1个节点,那么就可以用数组来表示。public class HeapDemo>{ public HeapDemo(){ this(DEFAULT_CAPACITY); } public HeapDemo(int capacity){ ... ...
分类:
其他好文 时间:
2017-10-03 18:13:09
阅读次数:
142
堆的实现 虽然我们之前的介绍堆的时候是一个二叉树,但是我们实现堆的时候并不是按照传统的二叉树实现(传统的二叉树是用链的形式,即一个父节点存放两个子节点的引用) 为什么要这样说呢? 我们先看一下堆的结构: 如果我们观察每一个节点的顺序,我们会发现一个有趣的规律: 对于任意个下标a的元素,他的左孩子下标 ...
分类:
其他好文 时间:
2017-09-11 18:09:21
阅读次数:
204
int heap[maxn], sz = 0; void push(int x) { int i = sz++; //自己节点的编号 while (i > 0){ int p = (i - 1) / 2; //父亲节点的编号 if (heap[p] <= x) //假设已经没有大小颠倒则退出 bre ...
分类:
其他好文 时间:
2017-08-18 18:34:58
阅读次数:
91
----------------------siwuxie095 索引从 0 开始 程序 1:最小索引堆的实现 MinIndexHeap.h: #ifndef MININDEXHEAP_H #define MININDEXHEAP_H #include #include ... ...
分类:
其他好文 时间:
2017-06-06 16:57:11
阅读次数:
265
---------------------siwuxie095 索引从 1 开始 程序 1:最大堆的实现 MaxHeap.h: #ifndef MAXHEAP_H #define MAXHEAP_H #include #include #include ... ...
分类:
其他好文 时间:
2017-06-05 22:11:23
阅读次数:
211
--------------------siwuxie095 堆的基本存储 在堆中实现的插入操作和删除操作,都是 logN 级别的, 显然,堆一定相应的是一个树形结构,最为经典的一种 堆的实现叫做 二叉堆(Binary Heap) 二叉堆对应的是二叉树,所谓二叉树,就是每一个节点, 最多有两个子节点... ...
分类:
其他好文 时间:
2017-06-05 20:59:26
阅读次数:
237