是否可以从文件中对一系列数字进行排序而不将它们保存到数组中,如果可以,如何?
问问题
293 次
1 回答
1
我假设这是一个文本文件,而不是二进制文件。文本文件(用于存储数字)的问题之一是数字可能大小不同。
是的,假设所有数字占用相同的空间(这意味着,如果它是一个文本文件,您已将所有数字填充到相同的长度)。[好吧,所以从技术上讲,无论如何都可以这样做,但这需要读取两点之间的所有中间数字,然后再次将它们写回,然后你几乎肯定会更好地读取整个文件并存储它再次退出]。
至于“如何” - 该方法与任何其他排序算法几乎相同,读取两个值,如果它们无序,则交换它们。可能有“减少读取/交换次数”的算法,我没有研究过。
我希望,如果您担心“我没有足够的内存来存储整个文件”,那么您可以读取几个大块并在这些块内/之间进行排序。根据需要重复。同样,可能有专门针对此的排序算法,但我不确定是哪一种——sort
当我需要对文本文件进行排序时,我倾向于使用 unix。
此页面上的第一个答案有一个“比较排序”链接 如何使用最少写入次数对数组进行排序?
于 2013-06-21T11:14:13.187 回答