```
def heap_sort(arr):
n = len(arr)
# 创建大顶堆,从最后一个非叶子节点开始,将其及其子树调整为大顶堆结构
for i in range(n//2-1, -1, -1): # 从最后一个非叶子节点开始,每次循环将当前根节点的左右子树调整为大顶堆
adjust_heap(arr, i, n)
# 将最大的元素放到末尾,并更新n的值,重新进行调整使得剩余元素成为大顶堆
for j in range(n-1, 0, -1): # 每次循环将当前无序区的最大值交换到无序区的末尾,并更新n的值,重新...