堆排序

Posted by KANG's BLOG on Wednesday, March 2, 2022

堆排序

1. 堆的定义

堆是二叉树的一种,其分为大顶堆和小顶堆

  • 大顶堆:

​ 每个节点的值都大于其左右子节点

  • 小顶堆:

​ 每个节点的值都小于其左右子节点

通常,做堆排序时,升序会采用大顶堆,降序采用小顶堆。

2. 算法说明

以升序排列为例,其排序过程分为如下步骤:

1.构造顶堆,此时根节点为最大值

2.将根节点与末尾节点交换,即将根节点下沉

3.将剩余节点重新构造为大顶堆

不断循环2、3两步,直到根节点比剩余节点的末尾节点小,即排序完成