【发布时间】:2018-10-17 15:48:51
【问题描述】:
我有一种情况,我必须存储数百万条记录。同时,我还需要对这些记录进行排序。我有以下问题。
- 使用哪种数据结构来保存如此大量的记录?
- 我应该使用哪种排序算法对上述选定数据结构上的记录进行排序?
- 我应该在添加时对数据进行排序,还是在需要时继续添加和排序?
- 数以百万计的记录都是 ff 类型的原语和对象。所以我需要对存储在两种不同数据结构中的两种类型的记录进行排序。
当有人问我百万记录中第 n 个最小/第 n 个最大的数据时,我需要从排序的数据中返回数据。我需要将此数据存储在内存中。
我确实试图找到答案,但找不到任何具体的东西。任何帮助表示赞赏?
【问题讨论】:
-
只需使用数据库,它总是比您自己的解决方案更好,并且您将免费获得数据的持久性。
-
这些问题的答案实际上取决于您实际上想要对这些数据执行的操作 - 您想要对数据执行的所有操作,以及您想要执行的每个操作相对于彼此的时间,这些操作的相对频率等。
-
您说您必须存储数百万条记录。你的意思是存储在磁盘上?还是您只需要将它们保存在内存中?正如@moreON 所说,您如何执行此操作取决于您将如何处理数据。如果没有更具体的信息,这个问题就太宽泛了,可能不会得到好的答案。
-
是的,我想在内存中存储数百万条记录。当有人问我第 300 个最小数据或第 10000 个最小数据时,我需要从排序后的数据中返回数据
-
如果您只想找到第 n 个最大或第 n 个最小的,则只需将记录加载到数组中,然后使用运行时库的标准排序函数对数组进行排序。然后查找成为数组的直接索引。不过,不知何故,我认为你并没有告诉我们整个故事。您是否一次获得所有记录?或者是否经常添加和/或删除记录?什么是“ff 类型原语”?如果您想要一个好的答案,您需要向我们提供有关数据以及数据收集和使用方式的更多信息。
标签: sorting data-structures collections