堆的学习
1.
堆: 堆(heap)是一种满足特定条件的完全二叉树
小顶堆:任意节点的值 <= 其子节点的值
大顶堆: 任意节点的值 >= 其子节点的值
堆作为完全二叉树的一个特例,具有以下特性。
最底层节点靠左填充,其他层的节点都被填满。
我们将二叉树的根节点称为“堆顶”,将底层最靠右的节点称为“堆底”。
对于大顶堆(小顶堆),堆顶元素(根节点)的值是最大(最小)的。
2. 堆常用于实现优先队列
完全二叉树可以用数组表示,第i个元素的子节点是2*i+1或2*i+2, 而父节点是 (i-1)/2
第一个叶子节点:n/2
最后一个父节点:n/2 -1
3. 使用堆排序:
先建堆, 就是倒序处理所有的父节点, 进行shift down 操作。然后出堆。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)