Перейти к содержанию

8.4   Краткие итоги

1.   Основные моменты

  • Куча представляет собой полное двоичное дерево и делится на максимальную кучу и минимальную кучу. Элемент на вершине максимальной (минимальной) кучи является наибольшим (наименьшим).
  • Очередь с приоритетом определяется как очередь, элементы которой извлекаются в соответствии с приоритетом; обычно ее реализуют с помощью кучи.
  • К основным операциям кучи и их временным сложностям относятся: добавление элемента в кучу \(O(\log n)\) , извлечение элемента с вершины кучи \(O(\log n)\) и доступ к вершине кучи \(O(1)\) .
  • Полное двоичное дерево очень удобно представлять массивом, поэтому кучу обычно тоже хранят в массиве.
  • Операция упорядочивания кучи используется для поддержания свойств кучи и применяется как при добавлении элемента, так и при извлечении элемента.
  • Временную сложность построения кучи из \(n\) элементов можно оптимизировать до \(O(n)\) , что очень эффективно.
  • Top-k - это классическая алгоритмическая задача, которую можно эффективно решать с помощью кучи за \(O(n \log k)\) .

2.   Q & A

Q: Является ли "куча" как структура данных тем же самым понятием, что и "куча" в управлении памятью?

Это не одно и то же, просто у них случайно совпало название. Куча в памяти компьютерной системы является частью динамического распределения памяти: во время выполнения программы она используется для хранения данных. Программа может запросить определенный объем памяти в куче для хранения сложных структур, таких как объекты и массивы. Когда эти данные больше не нужны, память нужно освободить, чтобы не допустить утечек. По сравнению со стековой памятью управление памятью в куче требует большей осторожности, а неправильное использование может привести к утечкам памяти, висячим указателям и другим проблемам.

Оставляйте свои идеи, вопросы и предложения в комментариях