这可能存在也可能不存在,但我正在寻找一种方法来存储在内存中连续的整数排序列表,相当紧凑,并允许O(log n)分期插入和删除。各种自平衡二进制搜索树似乎具有我想要的插入和删除属性,但是在整个地方使用指针实现,这不太适合我的用例。有什么想法吗?
(如果重要的话,实现语言几乎肯定是C语言。如果现有的任何你提出的实现,那就更好了,但我自己写的很好。)
答案 0 :(得分:0)
可以使用binary search tree实现array。
答案 1 :(得分:0)
根据"读取发生的事实更多然后写入",您可以尝试在其上使用dynamicaly-resized array + binary search。因此,您将O(log n)
时间访问元素(已阅读),但您必须为O(n)
付费才能插入/删除(O(log n)
- 搜索数组+ {{1}中的正确位置} - 将elemets向右或向左移动)。它有点慢,但这是如何解决它的方式。试着考虑一下。