# FIXME: chiamata a funzione definita dopo
#
# def heap_sort(arr):
#     heapify(arr)  
#     end = len(arr) - 1
#     while end > 0:
#         arr[end], arr[0] = arr[0], arr[end]
#         shift_down(arr, 0, end - 1)
#         end -= 1
#     return arr

# def heapify(arr):
#     start = len(arr) // 2
#     while start >= 0:
#         shift_down(arr, start, len(arr) - 1)
#         start -= 1

# def shift_down(arr, start, end):
#     root = start
#     while root * 2 + 1 <= end:
#         child = root * 2 + 1
#         if child + 1 <= end and arr[child] < arr[child + 1]:
#             child += 1
#         if child <= end and arr[root] < arr[child]:
#             arr[root], arr[child] = arr[child], arr[root]
#             root = child
#         else:
#             return