接上篇https://blog.csdn.net/Mr_zhang66/article/details/108440938

堆分为两种,一种叫大根堆,一种叫小根堆

根堆:完全二叉树中任何一个树的最值都是其头部

例如下图所示:整棵树的最大值就是其头部6,每颗子树的最大值也是头部 5,每颗小树的 最大值是其自身,如3 4 4
【听课笔记】数组的堆排序3——堆
根堆:完全二叉树中任何一个树的最值都是其头部

给一个数组,如何建立 大根堆

例如:
【听课笔记】数组的堆排序3——堆
【听课笔记】数组的堆排序3——堆

在构造完全二叉树的过程中

发现数字3比父节点数字大,

ps:怎么找自己的父位置:按照我们之前提过的,用(i-1)/2

所以这俩者交换,得到

【听课笔记】数组的堆排序3——堆
此时,0到2范围上形成 了完全二叉树

同时,这个6比1要大,继续往上换
【听课笔记】数组的堆排序3——堆
得到
【听课笔记】数组的堆排序3——堆
此时,6还要接着与3交换

【听课笔记】数组的堆排序3——堆
总之,相等的时候不换,只有大于父节点才换

相关文章: