libevent 发生超时后, while循环一次从堆顶del timer——直到最新调整的最小堆顶不是超时事件为止,(实际是del event),但是会稍后把这个timeout的 event放到active 任务list里, 等待处理,event标记为timeout,等处理actvie队列时再由应 ...
分类:
其他好文 时间:
2016-09-08 23:18:38
阅读次数:
805
写这篇文章前搜了下网上类似的文章,有很多,所以笔者的这篇文章就不对定时器的常见实现方法加以说明,也不进行性能比较,直接上代码。 基于multimap实现的比较简单,这里略过。 1 最小堆实现 2 时间轮实现 结束语 在曾经的很多项目中,定时器的实现都是使用map,也许效率不是太高,却从来没有成为性能 ...
分类:
其他好文 时间:
2016-09-03 12:20:58
阅读次数:
221
堆排序基本概念堆是一种数据结构,它是将一些数据放在物理数据结构:数组或者vector中;逻辑数据结构是完全二叉树。如果根节点的值大于两个子节点值,就是大根堆;如果根节点的值小于两个子节点值,就是小根堆。用堆这种数据结构来实现排序,就是堆排序。该算法的操作主要有minheapify:最小堆处理,复杂度... ...
分类:
编程语言 时间:
2016-08-31 17:11:39
阅读次数:
253
题目描述:查找最小的k个元素,输入n个整数,输出其中最小的k个。 一般的排序方法,如快排,时间复杂度为O(n*logn+k); 大顶堆方法,时间复杂度为O(k+(n-k)*logk); 如果建立k个元素的最小堆的话,那么其空间复杂度势为O(N),而建立k个元素的最大堆的空间复杂度为O(k); 当面对 ...
分类:
其他好文 时间:
2016-08-28 11:00:37
阅读次数:
495
堆堆,也叫二叉堆,就是完全二叉树二叉堆满足二个特性:1.父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。2.每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。当父结点的键值总是大于或等于任何一个子节点的键值时为最大堆。当父结点的键值总是小于或等于任何一个子节点的键值时为最小... ...
分类:
其他好文 时间:
2016-08-14 14:22:27
阅读次数:
131
题目大意: 给定n个数及其优先级,求对应的符合最小堆性质的Treap的先序遍历。 n<=500000。 解法: 目前为止我只想到了三种解法,其中第三种是正解。 1.暴力1 以优先级为关键字排序,然后按顺序构建BST即可。注意不能加平衡,因为这样会改变树的先序遍历。 期望复杂度O(nlogn)(排序和 ...
分类:
其他好文 时间:
2016-08-07 21:31:24
阅读次数:
173
堆的定义 堆(heap),这里所说的堆是数据结构中的堆,而不是内存模型中的堆。堆通常是一个可以被看做一棵树,它满足下列性质: [ 性质一 ] 堆中任意节点的值总是不大于(不小于)其子节点的值; [ 性质二 ] 堆总是一棵完全树。 将任意节点不大于其子节点的堆叫做最小堆或小根堆 ,而将任意节点不小于其 ...
分类:
其他好文 时间:
2016-08-01 20:57:01
阅读次数:
285
完全二叉树(堆)和满二叉树的结构: 满二叉树的判断: 二叉树的层次遍历。 完全二叉树的判断: 二叉树的层次遍历。 堆的增删改查: 增:按照次序从最右边节点插入,从下往上冒泡。 删:将最右下角元素置于堆顶,从上往下冒泡。 改:增+删 查:O(logN) ...
分类:
其他好文 时间:
2016-07-24 10:30:59
阅读次数:
149
文件压缩与解压思想:
(1)统计字符出现次数,结合最小堆的性质生成哈夫曼树;
(2)对叶节点进行编码,结点左边编0,右边编1;
(3)读取文件,用哈夫曼编码代替字符产生新的字符,即压缩;
(4)读取压缩文件,进行哈夫曼编码的解读产生相应字符,即解压;
例如,对以下数据生成哈夫曼树,以及产生相应的哈夫曼编码:
//自己写的最小堆(因为在加强巩固,所以没用STL里的)
...
分类:
其他好文 时间:
2016-07-19 11:06:56
阅读次数:
245
#pragmaonce#include"Heap.h"//使用博客实现的堆template<classT>structHuffmanNode//节点的结构信息{ T_weight; HuffmanNode<T>*_parent; HuffmanNode<T>*_left; HuffmanNode<T>*_right; HuffmanNode(constT&weight) :_weight(weight) ,_parent..
分类:
编程语言 时间:
2016-07-11 10:46:05
阅读次数:
214