🗒️基于数组实现一个大顶堆,并提供添加元素和删除堆顶元素的操作
2024-11-1
| 2024-11-5
0  |  阅读时长 0 分钟
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 操作,将元素下移,维持大顶堆的特性。

📎 参考

 
  • 面试题
  • 只出现一次的数字线程池
    Loading...
    目录