堆数据结构是一种数组对象,它可以被视为一颗完全二叉树,树中每个节点和数组中存放该节点值的那个元 素对应。如果表示堆的数组为A,那么树的根为A[1]。
一、 堆
1. 表示堆的数组A是一个具有两个属性的对象:length(A)是数组中的元素个数,heap-size(A)是存放在A中的堆的元素个数;A[heap-size(A)]之后的元素都不属于相应的堆。也就是:Heap-size(A)。
2....
分类:
其他好文 时间:
2014-07-08 20:23:53
阅读次数:
222
Kruskal算法用于计算一个图的最小生成树。这个算法的步骤如下:
按照边的权重从小到达进行排序
依次将每条边增加到最小生成树中,除非这条边会造成回路
实现思路
第一个步骤需要对边进行排序,排序方法在之前的章节中已经介绍了很多,可以使用优先级队列进行实现,也可以使用归并排序进行实现,这里采用归并排序。
第二个步骤需要判断是否会造...
分类:
其他好文 时间:
2014-06-22 21:43:31
阅读次数:
204
关于赫夫曼编码和赫夫曼树的相关知识可参考之前两篇文章(由二叉树构造赫夫曼树、赫夫曼编码)。本文介绍另一种构建赫夫曼树的方式,采用优先队列.
步骤:
1.首先我们需要统计不同字符出现的次数。一个字符出现的次数越多,说明其优先级越高,其赫夫曼编码应该越短;
2.将待编码的字符(即带权节点)存入优先级队列,优先级即字符出现的次数;
3.不断迭代队列,直到队列中剩下一个元素...
分类:
其他好文 时间:
2014-06-22 13:53:31
阅读次数:
255
堆排序、利用堆实现最大(小)优先级队列、STL中的heap的使用,利用堆求解top_k类问题。...
分类:
其他好文 时间:
2014-06-21 22:12:31
阅读次数:
291
java 队列、优先级队列、双向队列示例演示代码...
分类:
编程语言 时间:
2014-06-15 20:10:30
阅读次数:
271
优先级队列:如果我们给每个元素都分配一个数字来标记其优先级,不妨设较小的数字具有较高的优先级,这样我们就可以在一个集合中访问优先级最高的元素并对其进行查找和删除操作了。这样,我们就引入了优先级队列
这种数据结构。
优先级队列(priority queue) 是0个或多个元素的集合,每个元素都有一个优先权,对优先级队列执行的操作有(1)查找(2)插入一个新元素 (3)删除 一般情况下,查找操...
分类:
其他好文 时间:
2014-06-14 07:23:16
阅读次数:
271
今天终于决定使用STL提供的priority_queue,发现还挺好用,虽然很多人都称他效率不够高,但是使用起来很方便。下面就总结一下它的一般用法:模板原型:priority_queueT:存放容器的元素类型Sequence:实现优先级队列的底层容器,默认是vectorCompare:用于实现优先级...
分类:
其他好文 时间:
2014-06-10 11:36:53
阅读次数:
201
优先级队列是容器的一种,可以向优先级队列中添加或取出数据,取出数据时只能取出最大的数或最小的数。而其他的一些容器比如队列和栈,取出的顺序跟插入的顺序是有关的。
优先级队列的接口如下:
public class MaxPQ> {
MaxPQ();
void insert(Key x);
Key popMax();
boolean isE...
问题
模拟N个运动的小球,小球之间可以发生弹性碰撞
建模
硬碟模型
N个运动的质点,它们之间能发生弹性碰撞,也可以和墙壁发生弹性碰撞
每个质点有明确的位置、速度、质量、半径
没有其他外力
模型应用范围
麦克斯韦:物体的温度和微粒速度分布的关系
爱因斯坦:解释花粉的布朗运动
基本思想
...
分类:
其他好文 时间:
2014-06-10 07:39:34
阅读次数:
266
BFS+优先级队列。 1 #include 2 #include 3 #include 4
#include 5 using namespace std; 6 7 #define MAXNUM 205 8 9 typedef struct
node_st {10 int x, y...
分类:
其他好文 时间:
2014-06-03 06:50:09
阅读次数:
259