堆排序:是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。
- 每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;
- 每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。
时间复杂度:O (nlgn)
堆排序的工作原理:
- 假设序列有n个元素,先将这n建成大顶堆
- 然后取堆顶元素,与序列第n个元素交换
- 然后调整前n-1元素,使其重新成为堆
- 然后再取堆顶元素,与第n-1个元素交换
- 再调整前n-2个元素…直至整个序列有序。
介绍的是大顶堆的工作原理,下图给出小顶堆的图解,大顶堆与其类似,