我想要使用几百万种算法对文本文件进行排序。
我的编程语言是C#。
其结构txt文件如下:
for instance desired Result
------------ ---------------
723,80 1,4
14,50 1,5
723,2 10,8
1,5 14,50
10,8 723,2
1,4 723,80
与此同时,记忆对我来说非常重要。
这个算法适合这项工作吗?
如果合适,请解释此算法。 举个例子
谢谢。
答案 0 :(得分:4)
如果您可以将数据放入内存中,那么内置的快速排序可能会足够快。
正如另一个答案中所建议的那样,使用unix实用程序sort
是一个非常好的选择。我过去曾用它来测试超过100,000,000行的文件,运行时间为秒。
最后,如果您的数据集真的很大,那么您可以做的是以下
答案 1 :(得分:1)
如果是就地(因此没有使用额外的内存) merge-sort可能不是最佳选择,因为其标准实现使用线性数量的额外内存。
Quicksort ,在其标准实现中,不使用额外的内存,除了用于递归调用的内存(具有良好的实现,堆栈内存是O(logn)所以它不应该是一个伟大的问题)。
如果您不介意算法不稳定(也可以交换具有相同值的元素),您也可以考虑使用堆排序(就地,O(nlogn),从不二次) - 请注意,Quickosort通常也不稳定。)Heapsort也可能需要一些堆栈内存用于递归调用,但通常不如QuickSort那么多。
我没有包含QuickSort或HeapSort的说明,因为它们在网上或书中都有很好的记录。当然,可以在许多语言中找到示例,包括C#。
答案 2 :(得分:1)
对于此任务,我将使用GNU项目中的sort
。使用正确的语言环境和-n
可以完成这项工作,我怀疑你会用不那么大的努力击败这个经过测试的战斗程序。您甚至可以利用所有内核并对远大于RAM的文件进行排序。