行云

行至水穷处,坐看云起时。

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

2012年3月26日

摘要: 最大堆即大根堆 -- 求前n小最小堆即小根堆 -- 求前n大比如求前n小,对于当前元素,和最大堆的堆顶元素(即堆最大值)比较,如果小于堆顶元素,则替换堆顶元素,并调整堆。这样扫描一遍就可以得到最小的n个元素,效率非常高。问题实例:100w个数中找最大的前100个数1 INT_MIN初始化最小堆2 读入一个数,如果大于堆顶元素,则替换堆顶元素,并调整堆//base index 1#define LCHILD(i) (2*(i))#define RCHILD(i) (2*(i)+1)enum { BIGHEAP=0, SMALLHEAP=1,};//Adjust the heaptem... 阅读全文
posted @ 2012-03-26 23:32 windflying 阅读(1066) 评论(0) 推荐(0) 编辑

摘要: Bloom Filter的用途:1查询一个元素是否在一个集合中2 判重Bloom filter是一个包含m位的位数组filter长度: m位元素个数: n位hash函数个数: k个知道元素个数即n,如何确定m和k呢?这还和要求的错误率有关。1 首先,我们会确定允许的错误率E。当hash函数个数k=(ln2)*(m/n) = 0.693*(m/n)时错误率最小。2 在错误率不大于E的情况下,m至少要等于n*lg(1/E)才能表示任意n个元素的集合。但m还应该更大些,因为还要保证bit数组里至少一半为0,则m应该>=nlg(1/E)*lge 大概就是nlg(1/E)1.44倍(lg表示以.. 阅读全文
posted @ 2012-03-26 21:10 windflying 阅读(271) 评论(0) 推荐(0) 编辑