堆的数据结构
堆排序所利用的数据结构就是完全二叉树,其定义为除了最后一层外,其他各层的节点数都达到最大,并且最后一层的节点都连续集中在最左边。如果最后一层的节点数也达到最大,那么次完全二叉树也是满二叉树。
graph TB
    1 --> 2
    1 --> 3
    2 --> 4
    2 --> 5
    3 --> 6
    3 --> 7
    4 --> 8
    4 --> 9
而堆的概念是建立在完全二叉树之上的,每个节点的值均大于其左右子节点值的完全二叉树为大顶堆,而每个节点的值均小于其左右子节点值的完全二egq叉树为小顶堆。
graph TB
    subgraph 大顶堆
    5 --> 3
    5 --> 4
    3 --> 1
    3 --> 2
  end
  subgraph 小顶堆
      6 --> 7
      6 --> 8
      7 --> 9
      7 --> 10
  end
堆排序算法思路
假设待排序样本为[4, 7, 5, 3, 1, 0, 2]
- 将样本构建为大顶堆 
- 将根结点(堆顶)与最后一个节点交换 
- 重新调整堆 
- 重复步骤 2、3 
Go代码实现
| 1 | /** | 
