堆排序:是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。

  • 每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆
  • 每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆

时间复杂度:O (nlgn)

堆排序的工作原理

  • 假设序列有n个元素,先将这n建成大顶堆
  • 然后取堆顶元素,与序列第n个元素交换
  • 然后调整前n-1元素,使其重新成为堆
  • 然后再取堆顶元素,与第n-1个元素交换
  • 再调整前n-2个元素…直至整个序列有序。

介绍的是大顶堆的工作原理,下图给出小顶堆的图解,大顶堆与其类似,
Java版八大排序之堆排序

相关文章: