原帖由 aaaaa5aa 于 2009-8-25 19:16 发表 ![]()
200M内存+磁盘或u盘.,怎么实现
举一个最笨的方法(注意是最笨的,也不严谨,实际中不要去用,只是用来说明一个道理)来说明.
比如10个数字:
int n[]={3,1,2,8,4,6,5,9,0,7};
内存只能同时放3个数字,那么:
1. 读3个数字出来. 3,1,2 比较出最小的, min=1,并在一个文件current_i_file中写入下标1
2. 读2个数字出来. 8,4,min 比较出最小的, min=1
3. 读2个数字出来. 6,5,min 比较出最小的, min=1
4. 读2个数字出来. 9,0,min 比较出最小的, min=0 ,并在一个文件current_i_file中写入下标8
5. 读1个数字出来. 7,min 比较出最小的, min=0
6. 将min的值写入结果文件result_file,并且把current_i_file里的内容8追加到文件delete_i_file中.
7. 继续读数字,同时判定如果下标在delete_i_file中则跳过.
.....重复1....6
最后result_file里就是最后的结果了. |