Верхняя часть Min Heap

Jim Mellander спросил: 07 октября 2018 в 11:20 в: algorithm

Мое приложение наиболее эффективно, если я храню точки данных в мини-кеше (A). Тем не менее, в качестве завершающего шага я хочу вывести TopK из A.

В качестве отправной точки, добавив точки данных из A в обратном направлении в другую minheap (B) и однажды заполненный K точками данных, Отклонить точки данных меньше, чем корень, предоставит список TopK в обратном порядке.

Мне интересно, нужно ли мне пройти сквозь А полностью назад или вперед, или я могу остановиться, когда я закончу с строка (имеется в виду глубина дерева), которая предоставила как минимум K точек данных?

Я знаю, что существуют алгоритмы для преобразования minheap в maxheap, но я не хочу, чтобы вся исходная куча сортировалась, а просто TopK.

Заранее спасибо


0 ответов