500万条记录排序txt文件(不使用任何技术)?

时间:2013-12-20 17:20:23

标签: c#

我有一个包含数字的500万条记录的文件 它们不按顺序(不规则) 你可以在下面找到文件结构:

 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      

这种结构显示了不良状况和最佳状态 期望达到最佳

最重要的(主要)提示: 我没有使用任何技术,如linq,.... 我想用可用的算法来完成它并安排文件。

此外(更多)应该考虑时间 所以,我们需要使用适当的算法来按顺序排列数字 不到一分钟

2 个答案:

答案 0 :(得分:2)

你有几个可能的合理答案。

如果你有足够的内存,你可以使用标准集合类将所有内容带入内存,编写自己的比较函数并调用sort。

如果没有,可以编写多阶段合并排序(查找),或者根据对数据的深入理解编写临时方法

您可以将数据库用作排序,即批量插入已解析的数据,并使用适当的order by子句检索它。

购买或下载可处理此案例的现有排序。

答案 1 :(得分:0)

世界上最好的排序是n * log(n)复杂度[n是数组中元素的数量]。其中一种名为quick sort的排序算法。您可以从c#代码实现此排序并执行排序(仅当c#中没有内置快速排序时)。

另一种选择是,在c / c ++中执行排序。读取数组中的整个文件。然后使用自定义比较函数(由您自己编写并传递给qsort())对数组执行qsort()函数。将c / c ++代码转换为dll并从c#代码中调用它。