使用TDictionary对大文件进行排序

时间:2015-11-17 14:14:48

标签: algorithm delphi sorting dictionary

这个问题是Sorting 20GB of data的延续。

在前一个问题的答案中,没有人提到TDictionary。为什么? TDictionary会扼杀这么大的数据吗?

这次输入数据不同。 一条记录是这样的:

1 abc
2 00000000
3 00000000
4 00000000

在我的记录中,第一行包含必须排序的数据。第2,3,4行与排序无关。第一行可以是10-2000字节(字符)之间的任何值。 参赛作品总数可能在数千万的范围内。

我正在考虑将第一行放入字典中,并将文件中的地址(偏移量)放在记录开始处。

字典排序后,我只需要去偏移量,读取记录并将其复制到新的(已排序的)文件中。

所以,问题是:TDictionary是否适合这么多的条目?

1 个答案:

答案 0 :(得分:2)

没有提到字典的原因是它是一个无序容器。通过无序的字典无法排序。如果您希望订购字典中保存的数据,则需要一个不同的容器,此时字典的重点是什么?

在您之前的问题中,建议使用mergesort。这是个好建议。它非常适合外部分拣。这似乎是你需要的。