java - TreeSet 中有序操作的时间复杂度是多少?

标签 java algorithm complexity-theory treeset

java.util.TreeSet中下列操作的时间复杂度是多少? ?

  • first()
  • last()
  • 降低()
  • higher()

我会假设这些是常数时间,但 API 不作任何保证。

最佳答案

实际上,我原以为这些操作对于一般实现来说都是O(logN)

  • 对于 first()last()O(1) TreeSet 实现需要维护一个指针分别到树中最左边和最右边的叶节点。维护这些会增加每次插入的恒定成本,并且至少会增加每次删除的恒定成本。实际上,该实现可能会即时找到最左边/最右边的节点……这是一个O(logN) 操作。

  • lower()higher() 方法必须完成与 get 相同的工作,因此是 O(logN).

当然,您可以自己查看源代码以了解实际情况。 (正如其他人所做的那样:见下文。)

关于java - TreeSet 中有序操作的时间复杂度是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5214670/

相关文章:

swift - 想要像实时数据库一样获取 firestore

mysql - 书店的最佳销售数据库结构

algorithm - 微分方程 VS 算法复杂度

algorithm - 以下算法的复杂性

java - 决定 Java 内存模型的因果关系要求是否容易处理?

java - 创建进度条以使用 java 中 for 循环的结果进行更新

java - 新手 : Build error running Struts2 on JBoss from Eclipse

java - java socket和android之间使用可序列化对象进行通信

algorithm - 如何计算一棵树的高度

java - 不确定如何正确使用 Swing 布局