社区
C语言
帖子详情
文件中有10亿记录,怎样从中查找出现次数最多的10条
mikemeego001
2011-06-02 08:24:51
rtt
...全文
1007
10
打赏
收藏
文件中有10亿记录,怎样从中查找出现次数最多的10条
rtt
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
suisui008
2011-06-02
打赏
举报
回复
冒泡怎么样
只需要 10*10亿次
时间效率是O(10n)
maoxing63570
2011-06-02
打赏
举报
回复
[Quote=引用 8 楼 supermegaboy 的回复:]
引用 6 楼 maoxing63570 的回复:
引用 4 楼 demon__hunter 的回复:
我一个算法比较牛x同学告诉我,去面试时,凡是牵扯到数据量相当大的问题,都可以向hash靠拢~~~~
问题是如果散列函数要自己设计不就有点嘈耐了,这么大的数据量,冲突怎么解决?
实际上就是要计数冲突的次数。
[/Quote]
但是冲突也不一定就是相同的吧,还要取决于你的散列函数啊
飞天御剑流
2011-06-02
打赏
举报
回复
[Quote=引用 6 楼 maoxing63570 的回复:]
引用 4 楼 demon__hunter 的回复:
我一个算法比较牛x同学告诉我,去面试时,凡是牵扯到数据量相当大的问题,都可以向hash靠拢~~~~
问题是如果散列函数要自己设计不就有点嘈耐了,这么大的数据量,冲突怎么解决?
[/Quote]
实际上就是要计数冲突的次数。
nand库路泽
2011-06-02
打赏
举报
回复
记得好像归并排序算法,非常适用于海量数据,同样可以参照一下归并算法试一下!!
maoxing63570
2011-06-02
打赏
举报
回复
[Quote=引用 4 楼 demon__hunter 的回复:]
我一个算法比较牛x同学告诉我,去面试时,凡是牵扯到数据量相当大的问题,都可以向hash靠拢~~~~
[/Quote]
问题是如果散列函数要自己设计不就有点嘈耐了,这么大的数据量,冲突怎么解决?
飞天御剑流
2011-06-02
打赏
举报
回复
把记录当字符,到达相同末端就计数一次,保存十条最多的。
机智的呆呆
2011-06-02
打赏
举报
回复
我一个算法比较牛x同学告诉我,去面试时,凡是牵扯到数据量相当大的问题,都可以向hash靠拢~~~~
ryfdizuo
2011-06-02
打赏
举报
回复
[Quote=引用 1 楼 supermegaboy 的回复:]
散列算法,这样遍历文件一次就OK了。
[/Quote]
不知这个散列算法如何确定呢?
ischarles
2011-06-02
打赏
举报
回复
对10亿条记录进行排序,如果用快排,复杂度是O(N*logN),然后再遍历一遍进行计数,输出前10个,复杂度是O(N)。总的复杂度是O(N+N*logN) = O(N*logN)
或者也可以对每条记录进行hash运算,映射为一个整数,同时,可以用一个变量进行计数,这让你可以遍历一遍就找出前10个记录,但是复杂度取决于你用的hash函数的好坏,也就是要看你文件中的10亿条记录的具体特征了。
飞天御剑流
2011-06-02
打赏
举报
回复
散列算法,这样遍历文件一次就OK了。
海量数据处理:十道面试题与十个海量数据处理方法总结
海量数据处理:十道面试题与十个海量数据处理方法总结
算法:如何只用2GB内存从20
亿
个整数中找到
出现
次数
最多
的
那我们能不能找到一个算法,在原来的数组上进行操作就找到最终答案呢?但是,现在有20
亿
个数字,我们不可能把所有的数字加载到内存里面。怎么办?小结:假设数字都存在
文件
中评估用map找
出现
次数
最多
的数字能不能做可以看出,用map每次评估2
亿
是可以的...............
海量数据问题
1、怎么在海量数据中找出重复
次数
最多
的一个? 将大
文件
的数据进行hash,相同hash值的数据分配到一个
文件
,然后统计出每个
文件
出现
次数
最多
的单词和对应
次数
,然后比较每个
文件
的最大
出现
次数
,得到重复
次数
最多
的单词 2、上千万或上
亿
数据(有重复),统计其中
出现
次数
最多
的前 N 个数据。 3、一个文本
文件
,大约有一万行,每行一个词,要求统计出其中最频繁
出现
的前
10
个词,给出思想,给出时间复杂度分析。 4、
10
0w 个数中找出最大的
10
0 个数。
10
0W个数进行ha...
从
10
亿
个数字中找出最大的前
10
0个数
先拿
10
000个数建堆,然后一次添加剩余元素,如果大于堆顶的数(
10
000中最小的),将这个数替换堆顶,并调整结构使之仍然是一个最小堆,这样,遍历完后,堆中的
10
000个数就是所需的最大的
10
000个。建堆时间复杂度是O(mlogm),算法的时间复杂度为O(nmlogm)(n为
10
亿
,m为
10
000)。 优化的方法:可以把所有
10
亿
个数据分组存放,比如分别放在
10
00个
文件
中。这样处理就可以分别在每个
文件
的
10
^6个数据中找出最大的
10
000个数,合并到一起在再找出最终的结果。 ...
面试系列 |
文件
里存储了
10
亿
条
销量数据, 如何找出前
10
00大的数据?
题目: 我有一个
文件
, 里面存储了
10
亿
个商品销量数据, 如何找出前
10
00大的数据? 分析: 第一种最容易想到的方法是将数据全部排序,在排序后的集合中进行
查找
,最快的排序算法的时间复杂度一般为O(nlogn),如快速排序。但是在32位的机器上,每个float类型占4个字节,
10
亿
个浮点数就要占用400MB的存储空间,对于一些可用内存小于400M的计算机而言,很显然是不能一次将全部数据...
C语言
70,020
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章