type
status
date
slug
summary
tags
category
icon
password
创建时间
Nov 1, 2024 12:40 AM
基于数组的堆排序的关键,是
down 操作和 up 操作。down 操作是将当前节点比子节点小的元素向下移动,up 则是将当前节点大于父节点的元素向上移动。需要注意的一点是我们需要考虑数组的起始点的下标,一般是从 1 开始,因此 2 * u 则是左儿子,2 * u + 1 则是右儿子。u / 2 则是父节点。针对添加元素,我们通常将元素添加到数组的尾部,通过
up 操作将元素上移。针对移除元素,我们不是真的移除,而是将首尾元素交换,改变指针,然后通过 down 操作,将元素下移,维持大顶堆的特性。