算法:堆排序(HeapSort)

Posted WebJ2EE

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法:堆排序(HeapSort)相关的知识,希望对你有一定的参考价值。


1. 堆排序 ?


堆排序(HeapSort)是指利用堆(Heap)这种数据结构所设计的一种排序算法,它是选择排序的一种。

  • (Heap)是一个完全二叉树

  • 完全二叉树:叶节点只能出现在最下层和次下层,并且最下面一层的结点都集中在该层最左边的若干位置的二叉树为完全二叉树。

图1:完全二叉树

算法:堆排序(HeapSort)

  • 堆(Heap)可以分为大根堆小根堆

  • 大根堆:一棵完全二叉树,满足任一节点都比其孩子节点大;

  • 小根堆:一棵完全二叉树,满足任一节点都比其孩子节点小;

图2:大根堆

算法:堆排序(HeapSort)

图3:小根堆

算法:堆排序(HeapSort)


2. 基本流程 ?


堆排序的核心就构造堆、调整堆:

  1. 建立大顶堆堆(此时堆顶即为最大元素)

  2. 去掉堆顶,将堆最后一个元素放到堆顶;

  3. 调整堆,重新使堆有序;

  4. 堆顶元素为第二大元素。 重复步骤2、3,直到堆变空。

图4:排序前
算法:堆排序(HeapSort)
图5:  调整堆
算法:堆排序(HeapSort)

3. 程序代码 ?


图:堆排序代码

算法:堆排序(HeapSort)


4. 算法总结?


算法:堆排序(HeapSort)


算法:堆排序(HeapSort)


参考:

《算法基础》


精选文章推荐





以上是关于算法:堆排序(HeapSort)的主要内容,如果未能解决你的问题,请参考以下文章

《算法导论(CLRS)》骨灰级笔记分享:堆排序Heapsort

堆排序-HeapSort

堆排序HeapSort

堆排序(Heapsort),优先队列可以用于O(N log N)

堆排序

算法排序算法之堆排序