堆数据结构是一种数组对象,它可以被视为一棵完全二叉树结构。堆结构的二叉树存储:大堆:每个父节点的都大于孩子节点;小堆:每个父节点的都小于孩子节点。建堆:由于堆被视为完全二叉树,故在h-1层找到第一个(从后往前找)非叶子结点,进行堆的下调建大堆时,从下往上依次判..
分类:
其他好文 时间:
2016-04-28 07:08:16
阅读次数:
1382
堆排序相对冒泡排序、选择排序效率很高,不再是O(n^2).假若将一个序列升序排序好,那么我们来考虑最大堆还是最小堆来排序。假若是最小堆的话,堆的顶端必定是堆中的最小值,这样貌似可以。但是,如果是它的(一边或)子树左子树的节点数据值大于(一边或)右子树的节点数据值..
分类:
编程语言 时间:
2016-04-27 14:24:44
阅读次数:
252
一、用模版实现大小堆如果不用模版的话,写大小堆,就需要分别实现两次,但是应用模版的话问题就简单多了,我们只需要实现两个仿函数,Greater和Less就行了,仿函数就是用类实现一个()的重载就实现了仿函数。这个看下代码就能理解了。再设计参数的时候,需要把模版设计成模版的..
分类:
编程语言 时间:
2016-04-27 14:22:08
阅读次数:
158
一、堆的概念堆数据结构是一种数组对象,它可以被视为一棵完全二叉树结构。堆结构的二叉树存储是:最大堆:每个父节点的都大于孩子节点。最小堆:每个父节点的都小于孩子节点。堆栈中的物体具有一个特性:最后一个放入堆栈中的物体总是被最先拿出来,这个特性通常称为后进先出(..
分类:
其他好文 时间:
2016-04-27 14:18:25
阅读次数:
220
问题
spark的计算模型是如何做到并行的呢?如果你有一箱香蕉,让三个人拿回家吃完,如果不拆箱子就会很麻烦对吧,哈哈,一个箱子嘛,当然只有一个人才能抱走了。这时候智商正常的人都知道要把箱子打开,倒出来香蕉,分别拿三个小箱子重新装起来,然后,各自抱回家去啃吧。 Spark和很多其他分布式计算系统都借用了这种思想来实现并行:把一个超大的数据集,切分成N个小堆,找M个执行器(M < N),各自拿一块或...
分类:
其他好文 时间:
2016-04-26 22:02:05
阅读次数:
1476
二叉堆的概念
二叉堆,BinaryHeap,是二叉树中的常见的一种结构。通常以最大堆和最小堆的形式呈现。最大堆指的是父节点大于等于孩子节点的value值,也就是说对于最大堆而言,根元素是二叉堆最大的元素。最小堆的概念是与最大堆的概念是相似的。...
分类:
编程语言 时间:
2016-04-26 21:19:07
阅读次数:
215
该算法对于稠密图更加有效: 对于给出具有非负权重的边和源顶点S的图G,算法可在O(mlogn)时间内找出从s点到其他每一个顶点的距离。 如果图是稠密的,即对于某个ε>0,m>=n^(1+ε),可以被改善在O(m/ε)内执行。(m为图的边数,n为图的定点数) 最小堆模板: 代码实现:(hdu2544) ...
分类:
其他好文 时间:
2016-04-26 12:33:33
阅读次数:
207
在数据结构里,堆是一类很重要的结构。堆结构是一组数组对象,我们可以把它当作是一颗完全二叉树。最大堆:堆里每一个父亲节点大于它的子女节点。最小堆:堆里每一个父亲节点小于它的子女节点。如图就是一个最大堆:实现代码时我的测试序列是:inta[]={10,11,13,12,16,18,15,17,..
分类:
其他好文 时间:
2016-04-23 23:14:02
阅读次数:
716