代码之家  ›  专栏  ›  技术社区  ›  SeleniteXin

Java:有没有一种方法可以使用PriorityQueue从O(n)中的数组构造最大堆?

  •  2
  • SeleniteXin  · 技术社区  · 9 年前

    如果我错了,请纠正我,但我认为PriorityQueue(集合c)构造函数将在时间O(n)内从集合创建一个最小堆。然而,我找不到可以同时传递集合和比较器的构造函数(以便将最小堆转换为最大堆)。所以我想知道是否有一种方法可以使用PriorityQueue从O(n)中的数组(例如int数组)构造一个最大堆?

    1 回复  |  直到 9 年前
        1
  •  1
  •   John Bollinger    9 年前

    不,将一组元素排列在最小堆中不会为将它们重新排列到最大堆中提供任何好处。此外,您似乎认为 PriorityQueue 接受集合的构造函数具有 O(n) 渐近复杂性。这是合理的,甚至有可能的,但它没有被记录,因此依赖它是不安全的。