堆排序
文章目录
1. 是什么
1.1 前置知识
1.1.1 满二叉树
满二叉树:除最后一层的叶子节点外,其他节点都有两个孩子。
1.1.2 完全二叉树
完全二叉树:除最下面一层外,其他层都是满二叉树。且最下面一层子节点都集中在左边(同一层左边没有 右边不会有)
1.1.3 数组与完全二叉树
对于完全二叉树。我们将根节点保存在数组 Tree[0]。
则它的左右孩子分别为 Tree[1] 与 Tree[2]。
故Tree[1] 与 Tree[2]的父节点为 (1 - 1) / 2 与 (2 - 1) / 2 为 Tree[0];
故 n 号节点的父节点为 (n - 1) / 2;
而节点的孩子若存在则为 (0 * 2 + 1) 与 (0 * 2 + 2);
故 n 号节点的子节点为 n * 2 + 1 与 n * 2 + 2;
1.1.4 大根堆
首先是一个完全二叉树
对于每一个节点,根节点都大于他们的孩子节点。
<