我在Github上发现了一个好东西( 二 )


【我在Github上发现了一个好东西】因为每条数据都是32个字节 , 所以可以非常方便定位任意一条数据的位置:第n条数据的位置在32*(n-1)偏移处 。
通过改变数据的存储组织形式 , 我们可以把数据查找的时间复杂度从O(N)下降到O(LogN) 。
但如此一来 , 查找是变快了 , 但插入就麻烦了 。以前的时候 , 我们直接把数据塞到文件最后就拍拍屁股走人了 。但现在不行了 , 我们得把数据按照顺序 , 插入到合适的位置 。
最麻烦的是 , 我们的数据是一条一条挨个码在一起的 , 如果中间某个位置要插入数据 , 就得把那个位置及其以后的数据通通往后移动 , 这就涉及到大量的数据复制移动 , 开销非常大 。
要是每来一条insert操作就数据大量迁徙 , 那不得累得半死?
(其实不止插入 , 删除数据delete也同样如此麻烦)
就没有一种办法 , 可以同时插入快 , 查询也快吗?


推荐阅读