dijkstra(最短路)和Prim(最小生成树)下的堆优化 最小堆: down(i)【向下调整】:从第k层的点i开始向下操作,第k层的点与第k+1层的点(如果有)进行值大小的判断,如果父节点的值大于子节点的值,则修改,并继续对第k+1层与第k+2层的点进行判断和修改,否则不修改,且退出。当点向下移 ...
分类:
其他好文 时间:
2017-05-06 19:54:29
阅读次数:
198
堆是一种特殊的二叉树。它具有下面两个性质: 1、每一个节点的值大于或等于其每一个子节点的值。 2、该树全然平衡,最后一层的叶子都处于最左側的位置。 有最大堆和最小堆之分。以上定义是最大堆的定义,最小堆的定义例如以下: 1、每一个节点的值小于或等于其每一个子节点的值; 2、该树全然平衡,最后一层的叶子 ...
分类:
编程语言 时间:
2017-05-01 11:59:14
阅读次数:
164
A sequence S = {s1, s2, ..., sn} is called heapable if there exists a binary tree T with n nodes such that every node is labelled with exactly one ele ...
分类:
其他好文 时间:
2017-04-25 22:16:34
阅读次数:
221
#include <iostream> void Swap(int &a,int &b){ int temp; temp = a; a = b; b = temp; } // 维护最小堆 void AdjustMinHeap(int *a,int pos,int len){ int temp,chi ...
分类:
编程语言 时间:
2017-04-24 22:50:15
阅读次数:
212
1. 最大(小)堆 对于一个完全二叉树来说,如果所有的结点(叶子结点除外)的值都大于(小于)其左右孩子结点的值,那么这个完全二叉树就被成为一个大(小)根堆。如下图所示。按照堆的定义可以发现,堆顶结点(二叉树的根结点)一定对应整个序列中的最大(小)记录。这样一来,可以设计一种排序思路,每次将堆的堆顶记 ...
分类:
编程语言 时间:
2017-04-13 23:25:04
阅读次数:
231
Building Heap HihoCoder-1405 hihoCoder太阁最新面经算法竞赛11 问题大意:给定一个$N$个元素的数组$A$(元素互不相同),要求你建立满足下列要求的二叉树$T$,并输出其前序遍历: 1)$T$满足最小堆性质; 2)输入的数组$A$满足$T$的中序遍历。 这是一道 ...
分类:
其他好文 时间:
2017-04-13 22:27:08
阅读次数:
199
优化Dalvik虚拟机的堆内存分配 1)首先内存方面,可以参考 Android堆内存也可自己定义大小和优化Dalvik虚拟机的堆内存分配 对于Android平台来说,其托管层使用的Dalvik JavaVM从目前的表现来看还有很多地方可以优化处理,比如我们在开发一些大型游戏或耗资源的应用中可能考虑手 ...
分类:
移动开发 时间:
2017-04-07 10:21:27
阅读次数:
288
最小(大)堆是按完全二叉树的排序顺序的方式排布堆中元素的,并且满足:ai >a(2i+1) and ai>a(2i+2)( ai <a(2i+1) and ai<a(2i+2)).堆是一种高级的数据结构,在Python中,有相应的模块deapq。 下面给出自己编写的代码实现最小堆与使用heapq模块 ...
分类:
编程语言 时间:
2017-04-04 16:39:32
阅读次数:
221
欢迎探讨,如有错误敬请指正 如需转载,请注明出处 http://www.cnblogs.com/nullzx/ 1. 优先队列与索引优先队列 优先队列的原理大家应该比较熟悉,本质上就是利用完全二叉树的结构实现以log2n的时间复杂度删除队列中的最小对象(这里以小堆顶为例)。完全二叉树又可以通过数组下 ...
分类:
其他好文 时间:
2017-03-27 00:46:11
阅读次数:
293
JVM的堆的内存, 是通过下面面两个参数控制的 -Xms 最小堆的大小, 也就是当你的虚拟机启动后, 就会分配这么大的堆内存给你 -Xmx 是最大堆的大小 当最小堆占满后,会尝试进行GC,如果GC之后还不能得到足够的内存(GC未必会收集到所有当前可用内存),分配新的对象,那么就会扩展堆,如果-Xmx ...
分类:
其他好文 时间:
2017-03-13 20:25:19
阅读次数:
201