Сообщить об ошибке.

Основные примеры использования heapq

Здесь представлены несколько примеров использования модуля heapq

Пирамидальная сортировка:

Пирамидальная сортировка может быть реализована, помещая все значения в кучу, а затем выталкивая наименьшие значения по одному:

def heapsort(iterable):
    h = []
    for value in iterable:
        heappush(h, value)
    return [heappop(h) for i in range(len(h))]

>>> heapsort([1, 3, 5, 7, 9, 2, 4, 6, 8, 0])
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Это похоже на сортировку sorted(iterable), но в отличие от встроенной функции sorted() эта реализация не стабильна.

Назначение приоритетов задач:

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

>>> h = []
>>> heappush(h, (5, 'write code'))
>>> heappush(h, (7, 'release product'))
>>> heappush(h, (1, 'write spec'))
>>> heappush(h, (3, 'create tests'))
>>> heappop(h)
(1, 'write spec')