我有一个包含数字的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,.... 我想用可用的算法来完成它并安排文件。
此外(更多)应该考虑时间 所以,我们需要使用适当的算法来按顺序排列数字 不到一分钟
答案 0 :(得分:2)
你有几个可能的合理答案。
如果你有足够的内存,你可以使用标准集合类将所有内容带入内存,编写自己的比较函数并调用sort。
如果没有,可以编写多阶段合并排序(查找),或者根据对数据的深入理解编写临时方法
您可以将数据库用作排序,即批量插入已解析的数据,并使用适当的order by子句检索它。
购买或下载可处理此案例的现有排序。
答案 1 :(得分:0)
世界上最好的排序是n * log(n)复杂度[n是数组中元素的数量]。其中一种名为quick sort的排序算法。您可以从c#代码实现此排序并执行排序(仅当c#中没有内置快速排序时)。
另一种选择是,在c / c ++中执行排序。读取数组中的整个文件。然后使用自定义比较函数(由您自己编写并传递给qsort())对数组执行qsort()函数。将c / c ++代码转换为dll并从c#代码中调用它。