C:对大数据进行排序;不在记忆中

时间:2014-09-12 23:12:38

标签: c sorting bigdata

我正在学习使用大量数据。

我已经生成了10,000,000个整数的文件。我想对数据和时间进行多种排序(可能会绘制性能分析的值?)但我以前从未使用过大数据,也不知道如何排序(比方说,甚至冒泡排序! )数据不在内存中!我想调用这样的程序:

./mySort < myDataFile > myOutFile

如何排序无法放入链表或数组的数据?

2 个答案:

答案 0 :(得分:4)

有许多算法可用于执行此类操作。它们都属于External Sorting的总标题。

关于此的最佳参考之一,虽然技术性和密集性,但是Donald Knuth对磁带排序算法的处理。在数据存储在磁带上并且只能按顺序读取然后写入其他磁带的那一天,这种排序通常是通过在不同的磁带驱动器之间来回反复洗牌来完成的。

根据您使用的数据集的大小和类型,使用专用数据库加载数据或使用基于云的服务(如Google's BigQuery)可能是值得的。 BigQuery上传和下载数据集没有任何成本,您只需支付处理费用。每月处理数据的第一TB是免费的,您的数据甚至不到一GB。

编辑:这是关于外部排序算法的一组非常好的undergraduate lecture noteshttp://www.math-cs.gordon.edu/courses/cs321/lectures/external_sorting.html

答案 1 :(得分:1)

您需要使用外部排序

一次带入部分数据,在内存中对其进行排序,然后将其合并

此处有更多详情

http://en.m.wikipedia.org/wiki/External_sorting