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
操作,将元素下移,维持大顶堆的特性。