堆的学习

1.

堆: 堆(heap)是一种满足特定条件的完全二叉树
小顶堆:任意节点的值 <= 其子节点的值
大顶堆: 任意节点的值 >= 其子节点的值

堆作为完全二叉树的一个特例,具有以下特性。
最底层节点靠左填充,其他层的节点都被填满。
我们将二叉树的根节点称为“堆顶”,将底层最靠右的节点称为“堆底”。
对于大顶堆(小顶堆),堆顶元素(根节点)的值是最大(最小)的。

2. 堆常用于实现优先队列
完全二叉树可以用数组表示,第i个元素的子节点是2*i+1或2*i+2, 而父节点是 (i-1)/2
第一个叶子节点:n/2
最后一个父节点:n/2 -1

3. 使用堆排序:

先建堆, 就是倒序处理所有的父节点, 进行shift down 操作。然后出堆。

posted @ 2024-10-30 08:28  靖意风  Views(3)  Comments(1Edit  收藏  举报