У меня есть реализация с максимальной кучей на Python 3, я хотел бы использовать тот же код для реализации минимальной кучи, я оглянулся и не могу найти простой код, который реализует это, все это максимальная куча. Может ли кто-нибудь помочь мне, пожалуйста,
Это код, который у меня есть:
def heapify(array_list, heap_size, index):
largest = index # Initialize largest as root
left = 2 * index + 1
right = 2 * index + 2
# See if left child of root exists and is greater than root
if left < heap_size and array_list[index] < array_list[left]:
largest = left
# See if right child of root exists and is greater than root
if right < heap_size and array_list[largest] < array_list[right]:
largest = right
# Change root, if needed
if largest != index:
array_list[index], array_list[largest] = array_list[largest], array_list[index] # swap
# Heapify the root.
heapify(array_list, heap_size, largest)
def heap_sort(array_list):
heap_size = len(array_list)
# Build a max_heap.
for index in range(heap_size, -1, -1):
heapify(array_list, heap_size, index)
# One by one extract elements
for index in range(heap_size - 1, 0, -1):
array_list[index], array_list[0] = array_list[0], array_list[index] # swap
heapify(array_list, index, 0)
array_list = [1, 8, 3, 6, 12, 2, 9, 5, 10, 7, 11, 1, 4]
print('Original List: ', array_list)
heap_sort(array_list)
heap_size = len(array_list)
print('Sorted List: ', array_list)