免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123
最近访问板块 发新帖
楼主: redspider
打印 上一主题 下一主题

大文件排序问题 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2005-02-03 09:56 |只看该作者

大文件排序问题

思路还是一样的,不过步骤增多

先得到每一行的第一个字母的值,然后压入hash,排序,遇到值相同的然后再循环一边得到第二字母,不同值的就不需要再排序了,这样可以减少循环次数

论坛徽章:
0
22 [报告]
发表于 2005-02-03 11:21 |只看该作者

大文件排序问题

数据库干的事,你要自己干?

论坛徽章:
62
2016科比退役纪念章
日期:2016-06-28 17:45:06奥兰多魔术
日期:2015-05-04 22:47:40菠菜神灯
日期:2015-05-04 22:35:07菠菜神灯
日期:2015-05-04 22:35:02NBA季后赛大富翁
日期:2015-05-04 22:33:34NBA常规赛纪念章
日期:2015-05-04 22:32:032015年亚洲杯纪念徽章
日期:2015-04-14 16:54:452015年亚洲杯之朝鲜
日期:2015-03-19 23:03:16明尼苏达森林狼
日期:2015-03-16 21:51:152015小元宵徽章
日期:2015-03-06 15:57:202015年迎新春徽章
日期:2015-03-04 09:55:282015年辞旧岁徽章
日期:2015-03-03 16:54:15
23 [报告]
发表于 2005-02-03 13:44 |只看该作者

大文件排序问题

难道数据库或者hash排序不需要耗费内存

论坛徽章:
0
24 [报告]
发表于 2005-02-03 18:04 |只看该作者

大文件排序问题

通过算法可以大量节约内存,读入一段然后处理一段是常用的办法

论坛徽章:
62
2016科比退役纪念章
日期:2016-06-28 17:45:06奥兰多魔术
日期:2015-05-04 22:47:40菠菜神灯
日期:2015-05-04 22:35:07菠菜神灯
日期:2015-05-04 22:35:02NBA季后赛大富翁
日期:2015-05-04 22:33:34NBA常规赛纪念章
日期:2015-05-04 22:32:032015年亚洲杯纪念徽章
日期:2015-04-14 16:54:452015年亚洲杯之朝鲜
日期:2015-03-19 23:03:16明尼苏达森林狼
日期:2015-03-16 21:51:152015小元宵徽章
日期:2015-03-06 15:57:202015年迎新春徽章
日期:2015-03-04 09:55:282015年辞旧岁徽章
日期:2015-03-03 16:54:15
25 [报告]
发表于 2005-02-03 20:05 |只看该作者

大文件排序问题

[quote]原帖由 "superdoctor"]通过算法可以大量节约内存,读入一段然后处理一段是常用的办法[/quote 发表:


人家是全文件每行排序,
你只读入一段拍什么?说梦话

论坛徽章:
0
26 [报告]
发表于 2005-02-03 21:19 |只看该作者

大文件排序问题

楼上的最好看看我上面的帖子再说

读入一行,然后记录$hash{line_number}=ascii_value到hash中,释放这一行读入下一行,在记录$hash{line_number++}=ascii_value,最后按照ascii_value排序,再按照排序后的hash的line_number依次从原始文本中找到行号然后打印出来

当ascii_value相同时再根据linu_number取第二个字符值,再循环一遍即可,此方法可以使内存量降到最低

如果读入文件都要一次读到内存中,那你认为在128M内存的机器上还能干什么!?不懂不要乱说!

论坛徽章:
0
27 [报告]
发表于 2005-02-03 21:30 |只看该作者

大文件排序问题

是个好办法,感谢 superdoctor

论坛徽章:
62
2016科比退役纪念章
日期:2016-06-28 17:45:06奥兰多魔术
日期:2015-05-04 22:47:40菠菜神灯
日期:2015-05-04 22:35:07菠菜神灯
日期:2015-05-04 22:35:02NBA季后赛大富翁
日期:2015-05-04 22:33:34NBA常规赛纪念章
日期:2015-05-04 22:32:032015年亚洲杯纪念徽章
日期:2015-04-14 16:54:452015年亚洲杯之朝鲜
日期:2015-03-19 23:03:16明尼苏达森林狼
日期:2015-03-16 21:51:152015小元宵徽章
日期:2015-03-06 15:57:202015年迎新春徽章
日期:2015-03-04 09:55:282015年辞旧岁徽章
日期:2015-03-03 16:54:15
28 [报告]
发表于 2005-02-03 21:41 |只看该作者

大文件排序问题

原帖由 "superdoctor" 发表:
楼上的最好看看我上面的帖子再说

读入一行,然后记录$hash{line_number}=ascii_value到hash中,释放这一行读入下一行,在记录$hash{line_number++}=ascii_value,最后按照ascii_value排序,再按照排序后的hash的li..........


这样的hash排序比数组排序更浪费。
您的“最后按照ascii_value排序” 怎么不说说如何 按照ascii_value排序,
和数组排序除了更浪费内存,增加循环次数还有什么不同吗?

你这需要500w次的i/o本来一个小时的事情,非干一天才满足。

论坛徽章:
0
29 [报告]
发表于 2005-02-05 20:59 |只看该作者

大文件排序问题

论坛徽章:
0
30 [报告]
发表于 2005-02-06 13:56 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP