- 博客(6)
- 资源 (3)
- 收藏
- 关注
原创 TopK算法及实现
1. 问题描述 在大规模数据处理中,常遇到的一类问题是,在海量数据中找出出现频率最高的前K个数,或者从海量数据中找出最大的前K个数,这类问题通常称为“top K”问题,如:在搜索引擎中,统计搜索最热门的10个查询词;在歌曲库中统计下载率最高的前10首歌等等。2. 当前解决方案 针对top k类问题,通常比较好的方案是【分治+trie树/hash+小顶堆】,即先将数据集按照has
2011-10-20 14:08:09 10399
转载 数据结构之败者树
败者树原理 2个子结点比较后的败者放入它们的父结点,而胜者送到它们父结点的父节点去再作比较,这才是败者树。ls[0]放的是最终的胜者。堆: 当n较大的时候采用什么算法呢?首先我们分析上面的算法,当从N中取出一个新的数m的时候,它需要依次和max1,max2,max3……maxn比较,一直找到一个比m小的maxx,用m来替换max x,平均比较次数是n/2。可不可
2011-10-21 14:07:20 5207 2
原创 多路归并问题详解
工作的时候遇到一个倒排序列的归并问题。当然:每个序列都是有序的,这里我们令有序为从小到大排序。思考时,其主要有几点归并要求:1、归并求不同路的交集的时候交集个数越大越好。2、只有当结果数不满足排序需求的时候才去求归并的并集。3、在每一路中可能存在相同的元素。 代码中在归并的时候使用了 败者树 这一思想来实现。具体:(假设归并的路数为N,每一路的元素个数为M)1、建立
2011-10-20 18:12:58 4177 1
原创 scanf printf sscanf sprintf 函数时格式化字符说明
经常要用到格式化输出,输入函数,因此各个格式化字符就显得比较重要。下面对常用的格式化字符做一个总结:%d:格式化为有符号十进制整数,可以有长度的修饰。如 %5d %ld。%5d表示格式化的宽度为5。%o:格式化为有符号八进制数%x:格式化为有符号16进制数%I64d:格式化为有符号十进制数,ps:64位数据。LINUX下为%lld上述所述均有对应的无符号类型: %u & %I6
2011-10-20 11:26:58 1082
原创 C/C++ 代码换行问题
C/C++ 代码换行问题在写代码的时候遇到代码超长的情况下为了代码的美观及方便测试,故需要涉及到代码的换行问题,以下讨论了几种的情况:1、#define的宏 宏定义是以“\”换行,如:#define MAX(a,b) \ ((a)
2011-10-18 15:18:03 21139
转载 C++ 优先级
C/C++优先级列表,保存下,没事看几眼PrecedenceOperatorDescriptionExampleAssociativity1()[]->.::+
2011-10-13 15:31:01 599
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人