文件中有10亿记录,怎样从中查找出现次数最多的10条

mikemeego001 2011-06-02 08:24:51
rtt
...全文
1007 10 打赏 收藏 转发到动态 举报
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了。

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧