我想知道是否有一个简单的数据结构支持分摊的 log(n) 查找和插入,就像自平衡二叉搜索树一样,但具有恒定的内存开销。(我真的不关心删除元素)。
我的一个想法是将所有内容存储在一个连续的内存块中,该内存块分为两个连续的块:对所有元素进行排序的 S 部分和未排序的 U 部分。
要执行插入,我们可以在 U 中添加一个元素,如果 U 的大小超过 log(S 的大小),则对整个连续数组进行排序(将 S 和 U 视为一个连续数组),这样在排序所有内容都在 S 中,而 U 为空。
要在 S 上执行查找运行二进制搜索,只需查看所有 U。
但是,我无法计算我的算法的摊销插入时间。
最终,我只会欣赏一些具有所需属性的相当简单的算法/数据结构,并保证它在摊销时间内运行得相当快。
谢谢!