使用O(log(n))插入和O(1)查找排序数据结构

时间:2017-04-08 18:51:35

标签: java data-structures big-o

我在Java编码,我需要一个整数的排序数据结构,其最大插入时间为O(log(n)),索引按O(1)查找。是否存在可以执行此操作的内置数据结构,或者如果没有,我如何自行编程?

我知道Set可以完成第一个任务,但是对于查找元素i,我需要在i之前迭代所有元素。

1 个答案:

答案 0 :(得分:2)

可能的解决方案是跟踪维基百科称为“订单统计树”的子元素数量的树。然而,查找性能将与树的高度相关联,即O(log n)。

像B树一样快速扇出的树可以显着减少索引查找,尽管它总是保持为O(log n)。

不幸的是,Java的集合框架中没有这样的树。然而,几天的工作和测试应该产生合理的实施:)