堆的学习

1.

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

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

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

3. 使用堆排序:

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

posted @   靖意风  Views(6)  Comments(1Edit  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示