算法:堆排序(HeapSort)
Posted WebJ2EE
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法:堆排序(HeapSort)相关的知识,希望对你有一定的参考价值。
堆排序(HeapSort)是指利用堆(Heap)这种数据结构所设计的一种排序算法,它是选择排序的一种。
堆(Heap)是一个完全二叉树;
完全二叉树:叶节点只能出现在最下层和次下层,并且最下面一层的结点都集中在该层最左边的若干位置的二叉树为完全二叉树。
图1:完全二叉树
堆(Heap)可以分为大根堆和小根堆;
大根堆:一棵完全二叉树,满足任一节点都比其孩子节点大;
小根堆:一棵完全二叉树,满足任一节点都比其孩子节点小;
图2:大根堆
图3:小根堆
堆排序的核心就构造堆、调整堆:
建立大顶堆堆(此时堆顶即为最大元素)
去掉堆顶,将堆最后一个元素放到堆顶;
调整堆,重新使堆有序;
堆顶元素为第二大元素。 重复步骤2、3,直到堆变空。
图:堆排序代码
参考:
《算法基础》
精选文章推荐
以上是关于算法:堆排序(HeapSort)的主要内容,如果未能解决你的问题,请参考以下文章
《算法导论(CLRS)》骨灰级笔记分享:堆排序Heapsort