0

我有大量(数百万)固定大小的值以随机顺序存储在磁盘上。我将相同的一组值以不同的顺序存储在内存中。我需要将这些值按照它们在内存中的顺序存储在磁盘上。挑战在于:我需要在任何时候在磁盘上至少保留每个值的一个副本——即它需要是持久的。

我有相当多的 RAM 可以使用(这些值仅占 60% 左右),大量的临时存储空间,但持久磁盘上只有非常少量的空间,足以容纳不到一百万个值。

给定磁盘上的值,我可以非常非常快速地在内存中找到它。但反之则不然,给定内存中的值,在磁盘上查找它的速度非常慢。

鉴于这些限制,将值的顺序尽可能快地从内存传输到磁盘的最佳算法是什么?

4

1 回答 1

0

听起来您有一个排序问题,其中您的比较器是 RAM 中元素的顺序(如果 x 出现在 RAM 中的 y 之后,则xelement 比 element '大' )。y

可以使用外部排序来解决。

请注意,如果您允许重复,则需要进行更多处理以确保您的比较器有效(可以通过枚举相同的值并为每个重复项分配一个“dupe_id”来解决 - 无论是在 RAM 中还是在磁盘上)

于 2013-11-22T12:22:38.400 回答