【问题标题】:Does PriorityQueue call sorted every time get is called?每次调用 get 时,PriorityQueue 调用是否排序?
【发布时间】:2023-02-10 13:35:16
【问题描述】:

queue.PriorityQueue 的文档说:

首先检索最低值的条目(最低值的条目是sorted(list(entries))[0] 返回的条目)。

这是否意味着每次我使用 PriorityQueueget 方法时,元素都会重新排序?那似乎效率低下。

【问题讨论】:

    标签: python performance sorting priority-queue


    【解决方案1】:

    这并不意味着元素每次都重新排序 你使用 get 方法。

    PriorityQueue 的元素存储在binary heap data structure 中,这样可以在调用方法时高效地检索最小元素。

    因此,当以最低值元素始终位于堆顶部的方式进行排序时。这就是为什么您首先会获得最小值的原因。

    可以参考example and Explanation in deeply

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-10
      • 1970-01-01
      • 2015-12-24
      • 1970-01-01
      • 2013-07-08
      • 1970-01-01
      • 2015-04-08
      • 2020-03-25
      相关资源
      最近更新 更多