你好,
我在 Python 中使用 heapq 来实现优先级队列。队列中的项目的优先级发生了很大变化,当发生这种情况时,我需要堆化 heapq。
问题是 heapq 只有一个 heapify 函数来堆整整个堆,而不是从堆内的某个项目开始的 heapify 知道其余部分已经是一个有序的堆(就像经典的 CS 教科书 heapify)。
差异很大,因为每个 heapify 调用都是 O(n) 而不是 O(lgn)。可以在不使用标准列表实现堆的情况下完成吗?
谢谢!
看来我的问题与如何在 Python 的 heapq 中实现减少键功能重复?
那里的答案表明,没有办法使用特定项目的适当 O(lgn) heapify 重新实现基于堆的队列。