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

时间:2016-10-21 17:37:09

标签: java heap priority-queue

我必须为项目构建一个间接堆,我不太明白这意味着什么。如果你是从一个数组构建一个堆,实现间接是简单地添加某种地图数据结构来将每个项目与其索引相关联?还是比这更复杂?

1 个答案:

答案 0 :(得分:1)

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

想象一下,您有一个名称列表:["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]]进行比较。

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