1.堆结构;
堆有大顶堆和小顶堆,大顶堆是每个结点都大于或等于其左右孩子结点的值的完全二叉树,小顶堆和大顶堆相反,是每个结点都小于或等于其左右孩子结点的值的完全二叉树。
2.算法思想;(以大顶堆为例)
将待排序列构造成一个大顶堆,此时堆顶的根结点就是序列的最大值,将他移走(即将他与最后一个元素交换,这时序列的最后的元素就是最大值,然后将剩下的元素这重新构建成大顶堆,取其根结点即为次大值,以此类推,就形成一个从小到大的有序序列了)。
参考代码;
4.运行结果:
1.堆结构;
堆有大顶堆和小顶堆,大顶堆是每个结点都大于或等于其左右孩子结点的值的完全二叉树,小顶堆和大顶堆相反,是每个结点都小于或等于其左右孩子结点的值的完全二叉树。
2.算法思想;(以大顶堆为例)
将待排序列构造成一个大顶堆,此时堆顶的根结点就是序列的最大值,将他移走(即将他与最后一个元素交换,这时序列的最后的元素就是最大值,然后将剩下的元素这重新构建成大顶堆,取其根结点即为次大值,以此类推,就形成一个从小到大的有序序列了)。
参考代码;
4.运行结果: