导入
堆排序简介
该算法通过构建堆来对数组元素进行排序。(阅读时间:不到3分钟)
在堆中,所有节点的存储都基于其父节点的值。
这是一个最小堆:一个节点的根值总是小于或等于其子节点。在最大堆中,一个节点的根值总是大于或等于其子节点。此时数据尚未完全排序!
利用堆结构,你可以根据节点在数组中的索引,轻松找到它的父节点和子节点。
每当添加新节点时,它们总是以相同的方式添加:从左到右填充第一个空位。在堆中,你无需指定节点的父节点。
然而,这意味着新增的节点可能并不在正确的位置,就像这里的数字 2 一样。为了解决这个问题,我们将该节点与其父节点进行比较。如果该节点的值小于父节点的值,就交换两者,直到该节点到达正确的位置。