百度面试题海量数据排序类

apple7891 2009-10-09 05:08:30
linux32位系统下有10个无序文件,各文件大小不一(均小于1G)现在需要将此10个文件归并为一组,不超过10个有序文件(第一个文件最大数小于或等于第二个文件最小数,依次类推)请选择你擅长的语言实现说明 文件的每一行最大不超过128位的阿拉伯数字组合,每一行只有一个数字,头一位不是零
要求写出思路和程序,计算时间复杂度和空间复杂度

用内排序能实现吗?请高手赐教啊~~~~~
...全文
1767 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
yubeiluo1 2010-03-24
  • 打赏
  • 举报
回复
mark
jellyabcd 2009-10-14
  • 打赏
  • 举报
回复
mark
threeleafzerg007 2009-10-10
  • 打赏
  • 举报
回复
擦 自己认真看看题意
showjim 2009-10-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 threeleafzerg007 的回复:]
这题简单 楼上的兄弟提醒了我

这样划分10个文件。(假设数字均匀分布)

0 文件  0-12位以上全0

1 文件  13-25位以上全0 (0-12位 不care)

2 文件  26-48位以上全0
。。。

9 文件 

这样划分就可以保证你的要求了
都不用排啥序 (因为某个文件内没要求是有序的 文件间有序就OK撒)
时间复杂度O(n)

[/Quote]
文件间有序?那还不如写到一个文件里算了.
showjim 2009-10-10
  • 打赏
  • 举报
回复
32位系统,程序内存最大只有4G或2G.10G阿拉伯数字转成2进制,需要接近5G的空间,内排是解决不了问题的.
1.为了减少单值比较复杂度,可以将阿拉伯数字转成2进制,最简单的是两个数字转成1个字节,那么单值最多64字节;
给每个单值添加一个(单值的bit数/2).或两个字节(9b+7b)的长度标识,9b用于标识单值的bit数,7b用于复制单值的最高7位,如果单值最高位不为1还可以节省一个字节.
2.尽可能多的读取数据到内存并排序后写入到文件.
如果快排,单值要固定长度64b/65b/66b.
如果树排,单值长度随实际情况变化.
3.最后文件归并排序并将2进制还原成阿拉伯数字写入到文件组.

对于题目中的"不超过10个有序文件",不明白是什么意思,好像这个要求是多余的.如果阿拉伯数字长度固定为128位且分布第1位数分布均匀,可以考虑将先用基数排序将数据分到10个文件,然后单独对每一个文件数据进行内排序.
threeleafzerg007 2009-10-10
  • 打赏
  • 举报
回复
注 0-12位以上全0的同时 0-12位要非0
threeleafzerg007 2009-10-10
  • 打赏
  • 举报
回复
这题简单 楼上的兄弟提醒了我

这样划分10个文件。(假设数字均匀分布)

0 文件 0-12位以上全0

1 文件 13-25位以上全0 (0-12位 不care)

2 文件 26-48位以上全0
。。。

9 文件

这样划分就可以保证你的要求了
都不用排啥序 (因为某个文件内没要求是有序的 文件间有序就OK撒)
时间复杂度O(n)
suever 2009-10-10
  • 打赏
  • 举报
回复
基数排序吧?
每次处理一位,从最后一位开始处理。
将0-9分别存入10个文件中。
再处理这10个文件。
内排序感觉上是不行的,不过不排除你是用服务器
starwing83 2009-10-10
  • 打赏
  • 举报
回复
比如说,首先根据最后4位,分成10000个文件。根据前四位的数字,分别放入这10000个文件里面。然后合并这些文件为一个。然后根据最后5~8位,分成10000个文件。同样这么处理。一直到处理到第128位就齐活了。
apple7891 2009-10-10
  • 打赏
  • 举报
回复
8楼提供的用于比较两个数字的方法蛮有借鉴价值的
盘股之 2009-10-10
  • 打赏
  • 举报
回复
汗死!我连题目都没看懂.
apple7891 2009-10-09
  • 打赏
  • 举报
回复
如果10个文件,每个文件的大小都是1G,那怎么对10个文件做排序呢?
starwing83 2009-10-09
  • 打赏
  • 举报
回复
128位十进制数字?分4位4位进行32次基数排序试试看吧。
apple7891 2009-10-09
  • 打赏
  • 举报
回复
难道就没有人一起讨论吗?

33,007

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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