我有一个10 ^ 7 512位元素的动态数组,其中元素可以相互添加,删除和互换。每次用户操作数组时,我都希望以节省空间的方式记录更改,这样我就可以获得最终版本而无需评估所有以前的版本。这样做的最佳数据结构是什么?
一种昂贵的方法是存储数组的所有版本:
[1,5,7,3,8,2]
[1,4,5,7,3,8,2]
[1,5,4,7,3,8,2]
[1,4,5,3,7,8,2]
[2,4,5,3,7,8,1]
另一种方式(这需要计算每个版本以找到当前状态):
[1,5,7,3,8,2]
Add 4 between 1 and 5
Switch 4 with 5
Switch 3 with 7
Switch 1 with 2
是否有节省空间的替代方案可以解决问题?!
谢谢!
答案 0 :(得分:0)
尝试将数据保存在文本文件中(结尾处有换行符)。
并使用git / svn(任何SCM系统)来跟踪版本更改。
如果你能够将大量数据拆分成具有有意义的文件的多个小块数据,你会发现git / svn会帮助你。