具有 O(log(n)) 插入和 O(1) 查找的排序数据结构
Sorted Data Structure with O(log(n)) insert and O(1) lookup
我在 Java 中编码,我需要一个排序的整数数据结构,它具有最大 O(log(n)) 插入时间和 O(1) 索引查找。是否有可以执行此操作的内置数据结构,如果没有,我该如何自己编写一个?
我知道 Set 可以完成第一个任务,但是要查找元素 i,我需要遍历 i 之前的所有元素。
可能的解决方案是跟踪子元素数量的树,维基百科将其称为 "Order statistic trees"。然而,查找性能将与树的高度相关,即 O(log n)。
快速展开的树,如 B 树,可以显着减少索引查找,尽管它始终保持 O(log n)。
不幸的是,Java 的集合框架中没有这样的树。然而,几天的工作和测试应该会产生一个合理的实现:)
我在 Java 中编码,我需要一个排序的整数数据结构,它具有最大 O(log(n)) 插入时间和 O(1) 索引查找。是否有可以执行此操作的内置数据结构,如果没有,我该如何自己编写一个?
我知道 Set 可以完成第一个任务,但是要查找元素 i,我需要遍历 i 之前的所有元素。
可能的解决方案是跟踪子元素数量的树,维基百科将其称为 "Order statistic trees"。然而,查找性能将与树的高度相关,即 O(log n)。
快速展开的树,如 B 树,可以显着减少索引查找,尽管它始终保持 O(log n)。
不幸的是,Java 的集合框架中没有这样的树。然而,几天的工作和测试应该会产生一个合理的实现:)