堆是有特殊顺序的完全二叉树。常用数组存储。 以最小堆为例。其父节点,要小于左右两个子节点。如此递归定义。 数组存储。第i个节点的父节点是 (i-1)/2, 左子节点是2*i+1, 右子节点是2*i+2。当然是在考虑到数组边界的情况下。 其实堆运算很简单。只要清楚存储结构,明白插入,删除,建立时调整方 ...
分类:
编程语言 时间:
2017-03-12 11:15:49
阅读次数:
168
这里用到了STL里面的priority_queue,我也不是很精通基本上属于现学现卖阶段,http://www.cnblogs.com/flyoung2008/articles/2136485.html,这里挂一个我学习的地址 相当于一个堆,这里自定义了最小堆,这样之后每次取堆顶的两个元素就好,相加 ...
分类:
其他好文 时间:
2017-02-28 20:59:35
阅读次数:
190
(1) 最小堆算法 首先将数组的前(n+1)/2个元素建立一个最小堆。 然后,对于下一个元素,和堆顶的元素比较,如果小于等于,丢弃之,接着看下一个元素。如果大于,则用该元素取代堆顶,再调整堆,接着看下一个元素。重复这个步骤,直到数组为空。 当数组都遍历完了,那么,堆顶的元素即是中位数。 (2) 快排 ...
分类:
编程语言 时间:
2017-02-27 20:57:32
阅读次数:
209
堆排序的时间复杂度是O(nlgn),与归并排序一样,但它又与插入排序一样具有空间原址性:任何时候都只需要常数个额外的元素空间存储临时数据。 什么是堆?一般堆用数组存储,表现出近似完全二叉树形式,树上的每一个结点对应数组中的一个元素。除了最底层外,该树是完全充满的且从左至右填充。 maxHeapify ...
分类:
编程语言 时间:
2017-02-20 22:34:59
阅读次数:
164
一:什么是堆? 堆可视为 “以数组方式存储的一棵完全二叉树” 堆又分为最大堆和最小堆, 最大堆就是对于整个二叉树中的每一个节点都满足:节点的键值比其左右子节点的键值都要大,对应的最小堆则是:节点的键值比其左右子节点的键值都要小 二:堆排序的思路 对于一个存储最大堆的数组arr(长度为size), 根... ...
分类:
编程语言 时间:
2017-02-03 14:43:49
阅读次数:
224
题目描述: 有100枚硬币躺在桌子上, 每一枚都有正面和反面。其中10枚正面朝上,90枚反面朝上你不能摸、看或者其他方法来判断每一枚硬币哪面朝上。现在把硬币分成两堆,使得每一堆都有同样数量的正面向上的硬币。 思路(假设解题过程都是闭着眼睛):将硬币分成两堆,一堆10个,另一堆90个,然后将10的小堆 ...
分类:
编程语言 时间:
2017-01-20 14:25:12
阅读次数:
225
一款基于哈夫曼编码和最小堆的无损压缩、解压缩小程序,支持任何格式文件的压缩解压缩,代码已开源至github,具体地址请看正文前言部分 ...
分类:
其他好文 时间:
2017-01-17 23:21:58
阅读次数:
344
原创,请注明出处:http://www.cnblogs.com/stonehat/p/6286235.html Libevent 是一个事件驱动框架, 不能仅说他是一个网络库。 notejs就是采用与libevent类似的libev来做核心驱动的。 Libevent支持三种事件:io事件、信号事件、 ...
分类:
其他好文 时间:
2017-01-14 22:57:56
阅读次数:
202
jvm内存管理配置通用配置 -Xms4096m //最小堆内存-Xmx4096m //最大堆内存-Xmn2048m //年轻代大小-XX:SurvivorRatio=8 //设置eden区和survivor区的内存大小比例,例如8就代表eden和两个survivor区的比例是8:1:1-XX:Tar ...
分类:
其他好文 时间:
2017-01-11 15:49:22
阅读次数:
588
题意:n堆石子,两个人轮流拿,每次可以选择任意一堆取任意个(不能不拿)或者将一个堆分成3个小堆,问先手胜还是后手胜。 ...
分类:
其他好文 时间:
2017-01-01 18:10:02
阅读次数:
154