一,介绍 1)构造赫夫曼树的算法是一个贪心算法,贪心的地方在于:总是选取当前频率(权值)最低的两个结点来进行合并,构造新结点。 2)使用最小堆来选取频率最小的节点,有助于提高算法效率,因为要选频率最低的,要么用排序,要么用堆。用堆的话,出堆的复杂度为O(logN),而向堆中插入一个元素的平均时间复杂 ...
分类:
编程语言 时间:
2016-05-15 21:24:18
阅读次数:
657
一、概述 此处所说的堆为数据结构中的堆,而非内存分区中的堆。堆通常可以被看做是树结构,满足两个性质:1)堆中任意节点的值总是不大于(不小于)其子节点的值;2)堆是一棵完全树。正是由于这样的性质,堆又被称为优先队列。根据性质一,将任意节点不大于其子节点的堆称为最小堆或最小优先队列,反之称为最大堆或最大 ...
分类:
其他好文 时间:
2016-05-13 23:13:42
阅读次数:
297
一、大数据的处理给出N个数据,要求找到并输出这N个数里面最大的K个数思路:利用堆,先建一个开辟一个大小为K的数组,从N个数据里拿出K个数据放到堆里面,然后再通过向下调整法把堆调整为最小堆,此时数组的第一个元素就是堆里面最小的元素,然后在剩下的N-K个数据中依次和堆里..
分类:
其他好文 时间:
2016-05-13 15:29:39
阅读次数:
197
(一)用仿函数实现大堆小堆堆数据结构是一种数组对象,它可以被视为一棵完全二叉树结构。堆结构的二叉树存储是最大堆:每个父节点的都大于孩子节点。最小堆:每个父节点的都小于孩子节点。仿函数(functor),就是使一个类的使用看上去象一个函数。其实现就是类中实现一个operat..
分类:
其他好文 时间:
2016-05-13 05:19:40
阅读次数:
179
堆数据结构是一种数组对象,它可以被视为一棵完全二叉树结构。最大堆:每个父节点的都大于孩子节点。最小堆:每个父节点的都小于孩子节点。堆结构的二叉树存储是:代码实现如下:#pragmaonce
#include<iostream>
#include<vector>
#include<assert.h>
usin..
分类:
其他好文 时间:
2016-05-13 04:45:55
阅读次数:
169
题目链接:http://poj.org/problem?id=2051 ///维持最小堆(优先队列)POJ2051 #include <iostream> #include <string> using namespace std; struct Node { int Now; ///出堆的时间 i ...
分类:
其他好文 时间:
2016-05-11 21:37:16
阅读次数:
190
堆结构的二叉树存储是最大堆:每个父节点的都大于孩子节点。最小堆:每个父节点的都小于孩子节点。孩子节点下面,我们以小堆为例,实现堆的建立:代码如下:#pragmaonce
#include<iostream>
#include<vector>
#include<assert.h>
usingnamespacestd;
templa..
分类:
其他好文 时间:
2016-05-10 18:52:21
阅读次数:
165
jvm堆栈参数设置:-Xmx:设置最大堆大小;-Xms:设置最小堆大小;-Xss:设置栈大校栈最小默认1m静态代码块:随类的加载(且初始化,否则不执行)而执行且只执行一次。用来初始化静态变量静态代码块只能作为类的成员存在,Class.forName("java.lang.String");手动加载类Class.forNa..
分类:
其他好文 时间:
2016-05-09 22:21:49
阅读次数:
191
首先呢,先来了解一个何为堆?堆数据结构是一种数组对象,它可被视为一棵完全二叉树结构。堆结构的二叉树存储是:最大堆:每个父节点的都大于孩子节点最小堆:每个父节点的都小于孩子节点最大堆:a[]={19,17,18,14,16,13,15,12,10,11}最小堆:a[]={10,11,13,12,16,18,15,17,14,..
分类:
其他好文 时间:
2016-05-09 07:14:43
阅读次数:
115