Python3 min реализация кучи - PullRequest
       10

Python3 min реализация кучи

0 голосов
/ 06 октября 2019

У меня есть реализация с максимальной кучей на 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...