Решение задачи Пирамидальная сортировка с Яндекс Контест

Без пояснения   Просмотров: 1324


Отсортируйте данный массив. Используйте пирамидальную сортировку.


Код

def h_sort(a):
    n = len(a)
    for i in range(n, -1, -1):
        make_heap(a, n, i)
    for i in range(n - 1, 0, -1):
        a[i], a[0] = a[0], a[i]
        make_heap(a, i, 0)


def make_heap(a, heap_size, root_index):
    largest = root_index
    left_child = (2 * root_index) + 1
    right_child = (2 * root_index) + 2
    if left_child < heap_size and a[left_child] > a[largest]:
        largest = left_child
    if right_child < heap_size and a[right_child] > a[largest]:
        largest = right_child
    if largest != root_index:
        a[root_index], a[largest] = a[largest], a[root_index]
        make_heap(a, heap_size, largest)


n = int(input())
a = list(map(int, input().split()))
h_sort(a)
print(*a)

         

Администратор Photo Автор: Администратор



Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться



Заявка на расчет