堆排序

因为排序是log(n)级别
因此堆一定是一个树形结构:二叉堆

这个二叉树的特点:

  • 父亲结点总是 > 子结点
image.png
  • 二叉堆必须是一个完全二叉树。完全二叉树指该二叉树除了最后一层外,其他层的结点个数必须是最大值,且最后一层子节点必须全部集中在左侧。
image.png

注意:这样的堆称为“最大堆”,因为最上面的根结点一定是最大的值。如果我们要构建最小堆,则只需要保证根节点总是小于子节点。

给二叉堆每个结点标上序列号

image.png

我们可以轻易得出

  • 每个结点的左子结点的序列号一定是该结点的两倍
  • 每个结点的右子结点的序列号一定是该结点的两倍 + 1

注意:不使用数组第0号位存储

你可能感兴趣的:(堆排序)