创建一个新的排序文件,有效地包含连续数字的旧未排序文件的内容

时间:2015-06-17 09:33:19

标签: c algorithm performance sorting

我有一个包含无序字符串序列的文件(从0到n开始) 我需要按顺序创建一个包含字符串的新文件 原始文件的示例
4asaa 1b 0z 2ca 3m
新文件将包含相同的数据,但按顺序排列(根据数字)
0z 1b 2ca 3m 4asaa
我试图找到一个算法来有效地做到这一点,但我没有任何有效的想法,因为它是c语言我试图最小化文件上的操作量(因为它非常慢),但如果你有任何好主意,使用大量的文件动作随时分享。
长话短说,我正在寻找一种有效的方法。

谢谢大家。

1 个答案:

答案 0 :(得分:1)

如果您的文件足够小以适合内存 - 只需将其加载到RAM,使用任何sorting algorithm that suits you在RAM中对其进行排序,并将已排序的数组写入新文件。这仅需要2n次磁盘操作(n次写入和n次读取。“

如果您的文件太大而无法容纳在内存中,请使用external sort(基本上是merge sort的变体)来使用最少的磁盘搜索次数对文件进行排序。