Python Heap: как добавлять элементы и полезные методы

Чтобы добавить элемент в кучу в Python, вы можете использовать встроенный модуль heapq. Модуль heapqпредоставляет функции для управления кучами, которые представляют собой двоичные деревья, удовлетворяющие свойству кучи.

Вот пример того, как можно добавить элемент в кучу с помощью модуля heapq:

import heapq
heap = [3, 8, 2, 1, 6]  # Example heap
new_element = 4
heapq.heappush(heap, new_element)
print(heap)  # Output: [1, 4, 2, 8, 6]

В этом примере список heapпредставляет собой кучу, а new_element— это элемент, который вы хотите добавить в кучу. Функция heapq.heappush()используется для добавления элемента в кучу с сохранением свойства кучи.

Функция heappush()принимает два аргумента: кучу и добавляемый элемент. После добавления элемента список кучаизменяется, и новый элемент помещается в правильную позицию в соответствии со свойством кучи.

Вот несколько дополнительных методов, которые можно использовать для добавления элементов в кучу в Python:

  1. heapq.heappushpop(heap, item): эта функция сочетает в себе операции помещения элемента в кучу и извлечения наименьшего элемента из кучи. Он возвращает наименьший элемент, который был извлечен, или элемент, который был перемещен, в зависимости от того, что меньше.
  2. heapq.heapify(x): эта функция преобразует список xв кучу на месте. Он переупорядочивает элементы в списке так, чтобы они удовлетворяли свойству кучи.
  3. heapq.merge(*iterables): эта функция принимает несколько отсортированных входных данных (итераций) и объединяет их в один отсортированный вывод. Он возвращает итератор, который создает объединенные значения.
  4. heapq.nsmallest(n, iterable): эта функция возвращает n наименьших элементов из итерируемого объекта в порядке возрастания, используя алгоритм на основе кучи.
  5. heapq.nlargest(n, iterable): эта функция возвращает n крупнейших элементов из итерируемого объекта в порядке убывания, используя алгоритм на основе кучи.