Здесь представлены несколько примеров использования модуля 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')