菜鸟前来请教一个 排序 问题~~求指导

chen_q07 2012-01-03 08:39:37
前两天看到有个人问如何对4000 0000(即40M行)的文本文件进行排序并且去重。

想了想,感觉没有什么好方法,故此来请教下各位大侠。

(简要说说算法和时间复杂度和内存占用就可以了,不用详细分析。给个参考链接更佳)。
...全文
227 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
wide288 2012-01-29
导入到数据库再操作不是更好
回复
cnmhx 2012-01-28
对于海量数据,太大规模的数据只能分割成多个小规模数据,逐个实现小规模排序。
但不同时计算。要能同时计算(譬如你有256G的内存!),还分什么?
然后将各个小规模的排序结果,逐个插入合并。
回复
jiantheone 2012-01-23
BindingSource.Sort = "id" '排序
回复
超级大笨狼 2012-01-23
先分段,再每段分别排序去重,再归并。

4千万行算什么啊。 O(N)一分就变成子问题了。


排序可以做到N*logN
分段N=∑n
(∑n)*log(∑n) >> max(n*logn)

大规模数据缩小成多个小规模数据同时计算,这就是云计算,网格计算速度快的原因
不知道这个数学原理,都是伪云
回复
fxltsbl 2012-01-21
如果是整形数字的话,可以考虑用bloom filter,时间复杂度,O(n),空间占不了多少,1亿条8位的整形也就是十几兆;不过是自动去重(想不去重都难,);可以网上搜搜
参考:http://hi.baidu.com/iseeyou100/blog/item/21f4c53be06bdcde9e3d62a5.html
回复
SmallBoat2000 2012-01-20
这个要取决于你用什么机器。如果是在服务器端计算的话,一般像样点服务器都有128G以上的内存,这样的话完全可以装到内存中,例如:vector<string>中,再排序:sort()。最后再遍历去重。

或者直接用set<string>来装,这样就连排序和去重都省了。
回复
绝伤残影 2012-01-05
用快速排序吧!
回复
tic_ 2012-01-04
吾生也有涯,而知无涯
接分
回复
just_swizard 2012-01-04
这两天好像很多什么1亿个QQ号排序之类的……
数据库咋做的你也咋做就肯定没错,而且B+树算法啊什么的本身并不算复杂,当然如果你没有更简单的做法的话……
回复
相关推荐
发帖
数据结构与算法
创建于2007-08-27

3.2w+

社区成员

数据结构与算法相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2012-01-03 08:39
社区公告
暂无公告