海量数据Top K算法(C实现)
来源:互联网 发布:java程序员的自我介绍 编辑:程序博客网 时间:2024/05/01 04:12
最近2天受到http://blog.csdn.net/v_JULY_v/archive/2011/05/08/6403777.aspx的影响,从头开始实现了这个算法。收获还是挺大的:(1)实现了Hash链表(2)实现了堆;(3)熟悉了C语言的文件操作;
海量数据处理的Top K 算法就是在很大的文件中找出重复出现次数最多的前K个字符串;
如果数据可以一次读入内存,那么可以按照如下思路来解决:
(1)首先遍历文件,将其加入Hash链表;Hash链表的节点定义为:
word指向字符串,count为出现的次数;
(2)建立一个容量为K的最小堆,然后遍历Hash表中剩下的元素;如果找到了一个元素的count值比这个元素值大,那么交换这个节点和堆顶节点;
完整全部代码如下:在Eclipse + CDT + mingw 下调试通过
程序有待完善的地方:
(1)存在一个位置bug:改变HASHLEN的值,程序崩溃;
(2)HASH链表的遍历不正确,应该遍历到每一个节点的时候,在判断该节点的next是否为空;
运行结果:
100000个树中重复出现次数最多的前5个数:
the top K is as follows
49 , and its count is 372
4 , and its count is 374
249 , and its count is 373
246 , and its count is 380
227 , and its count is 376
- 海量数据Top K算法(C实现)
- 海量数据Top K算法(C实现)
- 海量数据Top K算法
- 海量数据处理算法(top K问题)
- 海量数据top K问题
- 海量数据处理的 Top K算法(问题) 小顶堆实现
- 海量数据处理: Top K算法(问题) 小顶堆实现
- 海量数据处理的 Top K算法(问题) hashtable+小顶堆实现
- 海量数据处理的 Top K算法(问题) 小顶堆实现
- TOP-K排序算法,从海量不重复数据中找出最大/小的K个数
- 算法10—海量数据处理之top k算法
- Top K算法的实现
- MapReduce解决在海量数据中求Top K
- 大数据Top K算法思路
- 大数据Top K算法思路
- 海量数据top排序
- 转 -- Top K算法问题的实现
- Top K算法问题的实现
- 【linux服务器】 NFS + 防火墙配置
- 大数据的处理总结
- TCP/IP连接建立与断开
- 根据共享参数来过滤满足条件的对象(代码)
- 闲来无事,对链表做了一下整理...
- 海量数据Top K算法(C实现)
- AnimationBlender - Ogre实现不同动画之间的混合
- oracle 9i 安装时报错----areasquerie
- 从此落户CSDN...
- A potentially dangerous Request.Path value was detected from the client 异常
- 简述Android触摸屏手势识别
- objective-c set
- Android 几个特别注意的小知识
- 无奈