堆排序算法

以下是一个完整的 堆排序(Heap Sort) Python实现,包含详细中文注释,适用于升序排序(使用大顶堆):

def heapify(arr, n, i): 
    # 当前节点
    largest = i
    # 当前节点左子节点
    left = 2 * i + 1
    # 当前节点左子节点
    right = 2 * i + 2

    # 找到当前节点、左子节点和右子节点中的最大值
    if left < n and arr[left] > arr[largest]:
        largest = left
    if right < n and arr[right] > arr[largest]:
        largest = right

    # 如果最大值不是当前节点,交换并继续调整
    if largest != i:
        arr[i], arr[largest] = arr[largest], arr[i]
        heapify(arr, n, largest)

def heap_sort(arr):
    n = len(arr)

    # 创建最大堆
    for i in range(n // 2 - 1, -1, -1):
        heapify(arr, n, i)

    # 逐个取出堆顶元素并调整堆
    for i in range(n - 1, 0, -1):
        arr[0], arr[i] = arr[i], arr[0]  # 交换堆顶元素和最后一个元素
        heapify(arr, i, 0)  # 调整堆

    return arr


arr = [4, 10, 3, 5, 1]
sorted_arr = heap_sort(arr)
print(sorted_arr)  # 输出: [1, 3, 4, 5, 10]
posted @ 2025-12-29 17:40  panda_an  阅读(1)  评论(0)    收藏  举报