【问题标题】:Java TreeMap time complexity - lowerKeyJava TreeMap 时间复杂度 - lowerKey
【发布时间】:2015-06-10 20:54:57
【问题描述】:

TreeMap的Java实现中lowerKey()操作的时间复杂度是多少?

我认为它是 log(n),但我在文档中的任何地方都找不到它。

更多基本操作的复杂性有据可查:

此实现为 containsKey、get、put 和 remove 操作。

顺便说一句:我也对subMap() 的复杂性感兴趣。我猜lowerKey() 的 log(n) 复杂度将允许 log(n) 时间用于constant size subMap()

【问题讨论】:

  • lowerKey 绝对是 O(log n)。 subMap 是 O(1) 并返回一个具有 O(log n) 额外开销的实现。

标签: java time-complexity treemap


【解决方案1】:

lowerKey() 是在平衡二叉搜索树中的搜索,所以显然是O(log n)。您可能想阅读源代码,例如来自here,看看树是如何遍历的。

同样,每个从subMap() 返回的带有NavigableMap 的操作也需要O(log n),因为您需要遍历树才能找到所需的元素。

【讨论】:

    猜你喜欢
    • 2012-12-26
    • 2016-12-16
    • 2020-01-23
    • 2019-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多