luyi2
2016-03-29 14:10如何将多个文件(每个文件大于1G)字符串进行行为单位排序,并且排序时内存小于50M.
现有N个文件(N>5):
• 每个文件包含了多行的字符串
• 每个文件大小大于1G
• 文件内字符串随机排列
要求实现:一个外部排序算法,以行为单位排序,满足以下需求:
需求
• 用C/C++/Java/C#实现
• 提供编译文件,如:
o GNU Makefile
o Visual Studio 工程文件
o Eclipse工程文件
o MAVEN文件等
• 编译文件需要生成两个可执行文件,且满足下文的接口需求:
o 测试文件生成程序: filesort_testgen
o 排序程序: filesort
• 排序程序使用内存不能大于50M
• 提供README文件,内容至少包括如何编译工程
filesort_testgen命令行接口
filesort_testgen FILE_COUNT LINES_PER_FILE PREFIX
其中:
• filesort_testgen为可执行文件名
• FILE_COUNT为需要生成的待排序文件的个数
• LINES_PER_FILE:每个待排序文件的行数
• PREFIX为生成文件的前缀
• 执行结果 其中${PREFIX}表示PREFIX参数的值
o 生成: ${PREFIX}1 ${PREFIX}2 ${PREFIX}3,
例子:
filesort_testgen 5 1000000 unsorted
Generated unsorted files:
unsorted1
unsorted2
unsorted3
unsorted4
unsorted5
结果会生出 unsorted1 unsorted2 unsorted3 unsorted4 unsorted5
filesort命令行接口
filesort INPUT_FILE_1 INPUT_FILE_2 ... OUTPUT_FILE
其中:
• INPUT_FILE_1表示输入文件的文件名(或路径)
• OUTPUT_FILE表示输出文件的文件名
• 执行结果:
o 输出排序完的文件
o 输出使用了多少内存
filesort unsorted1 unsorted2 unsorted3 unsorted4 unsorted5 sorted
Generate sorted file: sorted
Used memory: 4553333 B (4.34 M)
结果会生出排序后的文件sorted,并输出内存使用情况
- 点赞
- 回答
- 收藏
- 复制链接分享
2条回答
为你推荐
- Linux统计每一个txt文件中关键字出现的次数(目录下有很多txt文件)。
- linux
- centos
- c++
- bash
- 2个回答
- c语言:输入3个字符串,按由小到大的顺序输出,为什么输出有问题
- c语言
- 3个回答
- 做了一个小时的面试题(没有过 希望大家帮忙答下 虽然很幼稚 毕竟每个人都是这么过来的吗 感激了!)
- it技术
- 互联网问答
- IT行业问题
- 计算机技术
- 编程语言问答
- 2个回答
- java中使用Base64的加密方法将byte[]加密成一个字符串的问题?
- base64
- java
- 加密
- 2个回答
- 关于比较字符串函数strcmp()
- c
- 字符串
- 6个回答