存储许多类似数组的有效方法?

时间:2016-05-22 23:03:01

标签: arrays difference

最近,我面临着必须存储许多版本的问题。内存中的数组(想想撤销系统或版本控制中的文件更改 - 但也适用于其他地方)

如果不清楚:

  • 阵列可能相同,共享一些数据,或者根本不存在。
  • 可以在任何点添加或删除元素。
  • 目标是避免在阵列的大部分相同时存储全新的数组。
  • 出于此问题的目的,可以忽略诸如为每个值添加数字之类的更改(视为不同的数据)。

我已经考虑过编写自己的解决方案,原则上这可以很简单地完成:

  • 将数组划分为小
  • 如果没有任何变化,请重复使用阵列的每个新版本中的块。
  • 如果只有一个块发生变化,请创建一个包含更改数据的新块。
  • 检索数组可以通过分配内存,然后用每个块中的数据填充它来完成。

当数组长度发生变化或数据重新排序时,事情变得更加复杂。 然后,花费多少时间来搜索重复的块(在我的情况下,我在每个块的开头散列了一些数据以帮助识别候选者使用)

我已经让我的实现工作(如果它有用,可以链接到它,但我宁愿避免讨论我的特定代码,因为它会分散一般情况)

我怀疑我自己的代码可以改进(使用久经考验的内存散列和搜索方法)。可能我没有使用正确的条款,但我无法在线查找有关此搜索的信息。

所以我的问题是:

  • 哪种方法最有效地识别和存储共享某些连续数据的数组?

  • 是否有已知的工作方法被认为是解决此问题的最佳方法?

更新,写了一个小的(ish)单个文件librarytests,以及一个Python reference version

0 个答案:

没有答案