我有一个包含无序字符串序列的文件(从0到n开始)
我需要按顺序创建一个包含字符串的新文件
原始文件的示例
4asaa
1b
0z
2ca
3m
新文件将包含相同的数据,但按顺序排列(根据数字)
0z
1b
2ca
3m
4asaa
我试图找到一个算法来有效地做到这一点,但我没有任何有效的想法,因为它是c语言我试图最小化文件上的操作量(因为它非常慢),但如果你有任何好主意,使用大量的文件动作随时分享。
长话短说,我正在寻找一种有效的方法。
谢谢大家。
答案 0 :(得分:1)
如果您的文件足够小以适合内存 - 只需将其加载到RAM,使用任何sorting algorithm that suits you在RAM中对其进行排序,并将已排序的数组写入新文件。这仅需要2n
次磁盘操作(n
次写入和n
次读取。“
如果您的文件太大而无法容纳在内存中,请使用external sort(基本上是merge sort的变体)来使用最少的磁盘搜索次数对文件进行排序。