2016-10-21 1 views
0

Мне нужно построить косвенную кучу для проекта, и я не совсем понимаю, что это значит. Если вы создаете кучу из массива, реализуете косвенность, просто добавляя какую-то структуру данных карты, чтобы связать каждый элемент с его индексом? Или это сложнее?Может ли кто-нибудь объяснить концепцию косвенных кучей/непрямых очередей приоритетов для меня?

+0

Косвенная куча ничего не значит сама по себе. Вы можете сделать косвенную сортировку кучи, косвенную кучу * любой алгоритм действительно * ... Косвенная куча просто означает «без изменения того, что хранится в куче» –

ответ

0

Косвенная куча - это куча, в которой хранящиеся элементы данных являются индексами в список, массив или другую структуру данных, которая содержит фактические элементы.

Представьте, что у вас есть список имен: ["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]].

Некоторые люди называют это полусопряженной кучей. Прямая куча на своем языке содержит дополнительное сопоставление от имени к индексу.

Смежные вопросы