一、先上维基的图:
图一、堆排序算法的演示(首先,将元素进行重排,以符合堆的条件。图中排序过程之前简单的绘出了堆树的结构。)
分类 | 排序算法 |
---|---|
数据结构 | 数组 |
最差时间复杂度 | |
最优时间复杂度 | [1] |
平均时间复杂度 | |
最差空间复杂度 | total, auxiliary |
二、描述:
堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。
二叉堆满足二个特性:
1.父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。
2.每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。
一般都用数组来表示堆,i结点的父结点下标就为(i – 1) / 2。它的左右子结点下标分别为2 * i + 1和2 * i + 2。如第0个结点左右子结点下标分别为1和2。
图二、堆的数组表示