有人可以向我解释间接 heaps/indirect 优先级队列的概念吗?

Can someone explain the concept of indirect heaps/indirect priority queues to me?

一个项目要建一个间接堆,不太明白是什么意思。如果您从数组中构建堆,那么实现间接是否只是添加某种映射数据结构以将每个项目与其索引相关联?还是比这更复杂?

间接堆是一种堆,其中存储的数据项是列表、数组或其他包含实际项的数据结构的索引。

假设您有一个名称列表:["jim","joe","bob","sam","susan","kelly","jessica"] 您要从中构建一个堆。直接堆将具有:

         bob
    joe        jessica
sam   susan  jim    kelly

间接堆会将堆中的名称替换为列表中的索引:

         2
    1        6
 3     4   0   5

您的比较功能必须更改。您最终没有将 heap[0]heap[1] 进行比较,而是将 list[heap[0]]list[heap[1]] 进行了比较。

有些人称之为半间接堆。按照他们的说法,直接堆包含从名称到索引的附加映射。