Android的虚拟机是基于寄存器的Dalvik,它的最大堆大小一般是16M。但是Android采用的是Java语言编写,所以在很大程度上,Android的内存机制等同于Java的内存机制,在刚开始开发的时候,内存的限制问题会给我们带来内存溢出等严重问题。在我们不使用一些内存的时候,我们要尽量在An...
分类:
移动开发 时间:
2014-11-03 11:24:03
阅读次数:
219
一 堆 堆给人的感觉是一个二叉树,但是其本质是一种数组对象,因为对堆进行操作的时候将堆视为一颗完全二叉树,树种每个节点与数组中的存放该节点值的那个元素对应。所以堆又称为二叉堆,堆与完全二叉树的对应关系如下图所示:二叉堆可以分为两种形式:最大堆和最小堆。在这两种堆中,结点的值都要满足堆的性质。在最大堆...
分类:
编程语言 时间:
2014-11-02 20:51:42
阅读次数:
244
如果要我们找出一个数组中的最小(最大)的元素,那么第一反应肯定是使用最小(最大)堆。时间复杂度等同于建堆的复杂度,这里是O(N)。如果要我们找出一个数组中的第k个最小的元素,那么我们依然可以使用最小堆,删除掉k次的最小值,就得到了结果。复杂度是O(N + klogN)。如果要我们找出一个数组的中值,...
分类:
编程语言 时间:
2014-10-31 15:18:15
阅读次数:
248
在线求第k个数做得多了,在线求中位数也是用堆,一个最大堆,一个最小堆。思想大概是这样子的:一个最大堆,一个最小堆,最大堆对应于前n/(n+1)个数,最小堆对应于后n/n+1个数;假设最大堆堆项元素为n1, 最小堆堆顶为n2, 则n1 s2, 那么:如果m >= n1, m插入到最小堆,s2=s2+....
分类:
其他好文 时间:
2014-10-30 16:46:15
阅读次数:
198
与上篇《二叉堆 - 最小堆》类似,只不过堆序(heap order)从内部节点小于左右子节点变成了内部节点大于左右子节点。代码如下: 1 #include 2 #include 3 4 #define MIN (1items =(Item*)malloc((maxItems+1)*si...
分类:
其他好文 时间:
2014-10-29 16:32:17
阅读次数:
270
二叉堆:一般我们拿来用的就是最大堆和最小堆。最小堆:每个节点的值比它的左右子节点的值要大。代码实现如下:参考Mark Allen Weiss《数据结构和算法分析》(第二版) 1 #include 2 #include 3 4 #define MIN (1items =(Item*)ma...
分类:
其他好文 时间:
2014-10-28 23:55:06
阅读次数:
997
堆在实现优先权队列和求最大最小的n个数问题上,有这莫大的优势!
对于最大堆和最小堆的定义此处不再赘述,课参考网上文章:http://blog.csdn.net/genios/article/details/8157031
本文主要是对最小堆进行实现和应用,仅供菜鸟参考。
优先权队列
优先权队列是一种非常有用的数据结构,操作系统的进程调度就有优先权队列的应用,如果用最小值表示最高的优...
分类:
编程语言 时间:
2014-10-22 18:16:13
阅读次数:
244
1.JVM(Java Virtual Machine) 1.-Xms??? 初始堆大小 2.-Xmx??? 最大堆大小 3.-Xmn??? 青年代大小 4.-Xss??? 每个线程的堆栈大小 5.-XX:+UseParNewGC??? 青年代垃圾收集方式为并行收集 6.-XX:+U...
分类:
编程语言 时间:
2014-10-22 14:45:48
阅读次数:
255
题目链接:http://poj.org/problem?id=2833思路:由于数据量较大,超出存储范围,使用不能使用数组存储数据在进行排序。考虑维护一个最大堆与最小堆,依次读取数据,记录数据中的n1个最大数字与n2个最小数据,所有数据累计和减去堆中数据即可。注:注意使用记录n2个最大数据要使用最小...
分类:
其他好文 时间:
2014-10-22 06:18:49
阅读次数:
106
题目链接:http://poj.org/problem?id=1442思路:维护一个最小堆与最大堆,最大堆中存储最小的K个数,其余存储在最小堆中代码:#include#includeusing namespace std;struct cmp1{ bool operator() ( cons...
分类:
其他好文 时间:
2014-10-22 00:26:42
阅读次数:
223